如何解决cmake find_library() 找不到 PATHS
我有一个符合以下条件的 find_library()
语句(这是基于 amazon kinesis project):
find_library(SRTP_LIBRARIES NAMES srtp2 required PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX})
OPEN_SRC_INSTALL_LIB_PREFIX
正确指向此库所在的位置。我可以直接观察这一点。但是,这个 find_library()
调用失败了,我很困惑为什么会这样做。
我认为 cmake 可能首先搜索其他路径并忽略我指定的路径,所以我也尝试使用 NO_DEFAULT_PATH
标志,因为这应该将搜索限制为 only在指定的路径中:
find_library(SRTP_LIBRARIES NAMES srtp2 required PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX} NO_DEFAULT_PATH)
...仍然没有运气。
任何想法为什么这不起作用?我已经通过 OPEN_SRC_INSTALL_LIB_PREFIX
打印验证了 message()
是图书馆的有效目录。
请注意,这是交叉编译,尽管我不明白为什么这会改变 find_library()
的行为,除非我遗漏了 the documentation 中的某些内容
解决方法
首先要注意我在 cmake
17.5。
好的,所以文档有点混乱,但似乎 NO_DEFAULT_PATH
只会使用 PATHS
参数指定的路径,而不使用其他缓存变量,但是 如果设置了 CMAKE_SYSROOT
, 似乎不是这种情况。
使用 NO_CMAKE_FIND_ROOT_PATH
实际上会导致 find_library()
忽略缓存路径。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。