我有一个find_library()
与下面匹配的声明(这是基于amazon kinesis 项目):
find_library(SRTP_LIBRARIES NAMES srtp2 REQUIRED PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX})
在OPEN_SRC_INSTALL_LIB_PREFIX
正确指出到这个库所在的位置。我可以直接观察这一点。但是,这个find_library()
调用失败了,我很困惑为什么会这样做。
我想,也许cmake的是通过其他路径优先搜索,而忽略我的指定的路径,所以我也跟试了一下NO_DEFAULT_PATH
标志,因为这应该限制搜索只在指定的路径:
find_library(SRTP_LIBRARIES NAMES srtp2 REQUIRED PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX} NO_DEFAULT_PATH)
......仍然没有运气。
任何想法为什么这不起作用?我已经OPEN_SRC_INSTALL_LIB_PREFIX
通过message()
打印验证了库的有效目录。
请注意,这是交叉编译,虽然我不明白为什么这会改变行为,find_library()
除非我从文档中遗漏了一些东西
首先要注意我在cmake
17.5。
好的,所以文档有点混乱,但似乎NO_DEFAULT_PATH
只使用PATHS
参数指定的路径而不使用其他缓存变量,但如果CMAKE_SYSROOT
设置了,情况似乎并非如此。
使用NO_CMAKE_FIND_ROOT_PATH
实际上是导致find_library()
忽略缓存路径的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句