【发布时间】:2021-07-11 19:20:33
【问题描述】:
我有一个与下面匹配的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 标志,因为这应该将搜索限制为仅在指定路径:
find_library(SRTP_LIBRARIES NAMES srtp2 REQUIRED PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX} NO_DEFAULT_PATH)
...仍然没有运气。
任何想法为什么这不起作用?我已经通过message() 打印验证了OPEN_SRC_INSTALL_LIB_PREFIX 是库的有效目录。
请注意这是交叉编译,尽管我不明白为什么这会改变find_library() 的行为,除非我遗漏了the documentation 中的某些内容
【问题讨论】:
-
将
--debug-find选项添加到cmake并检查与您的find_library调用对应的输出。它应该打印出哪些路径被实际搜索,哪些路径被忽略。 -
好提示@Tsyvarev,我现在看到它实际上根本没有使用我传入的路径......关于为什么会这样的任何想法?是否正在进行某种缓存?它似乎正在使用 SYSROOT 路径,然后在我指定 NO_DEFAULT_PATH 时不使用任何路径(即使 PATHS 已定义且有效)
-
The CMAKE_SYSROOT variable can also be used to specify exactly one directory to use as a prefix. Setting CMAKE_SYSROOT also has other effects. See the documentation for that variable for more. -
我猜这就是困扰我的原因
标签: cmake cmake-language