1

我有一个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)

......仍然没有运气。

任何想法为什么这不起作用?我已经通过prints验证了OPEN_SRC_INSTALL_LIB_PREFIX它是库的有效目录。message()

请注意,这是交叉编译,尽管我不明白为什么这会改变行为,find_library()除非我从文档中遗漏了一些东西

4

1 回答 1

0

首先要注意我在cmake17.5。

好的,所以文档有点混乱,但似乎NO_DEFAULT_PATH只会使用参数指定的路径而不PATHS使用其他缓存变量,但如果设置了,情况似乎并非CMAKE_SYSROOT如此。

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

于 2021-04-22T23:12:57.540 回答