cmake find_library() 找不到 PATHS 指定的库

cmake find_library() not finding library specified by 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)

...仍然没有运气。

知道为什么这行不通吗?我已经通过 message() 打印验证了 OPEN_SRC_INSTALL_LIB_PREFIX 是库的有效目录。

请注意,这是 交叉编译,尽管我不明白为什么这会改变 find_library() 的行为,除非我遗漏了 [=21] 中的某些内容=]

首先要注意我在 cmake 17.5.

好的,所以文档有点混乱,但似乎 NO_DEFAULT_PATH 只会使用由 PATHS 参数和其他缓存变量的 none 指定的路径,但如果设置了 CMAKE_SYSROOT 就不会

使用 NO_CMAKE_FIND_ROOT_PATH 实际上是导致 find_library() 忽略缓存路径的原因。