CMake 在错误的路径上查找库
Posted
技术标签:
【中文标题】CMake 在错误的路径上查找库【英文标题】:CMake Finding Libraries on Wrong Path 【发布时间】:2012-03-20 23:56:39 【问题描述】:我正在尝试使用 CMake 来使用本地 32 位版本的 cURL,而不是安装的 64 位版本。当我使用 CMake 命令find_library
时,它仍然返回/usr/lib/x86_64-linux-gnu/libcurl.so
的路径。我试过使用标志 NO_DEFAULT_PATH 和 NO_SYSTEM_ENVIRONMENT_PATH 但仍然不能强制它首先在本地查看。我的代码如下:
find_library(MYCURL NAMES libcurl
HINTS $MY_CURL_DIR
NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH)
我已经指定(并验证)$MY_CURL_DIR
正在寻找正确的位置。有什么想法吗?
【问题讨论】:
【参考方案1】:您是否要在两次尝试之间删除您的CMakeCache.txt
?或者更具体地说,CMakeCache.txt
中的 MYCURL
条目。 (这个文件应该存在于你调用 CMake 的目录中)。
如果find_library
成功找到库,CMake 的进一步执行不会重试查找相同的库。
在您的命令中,NO_SYSTEM_ENVIRONMENT_PATH
选项是多余的 - NO_DEFAULT_PATH
会停止搜索除 $MY_CURL_DIR
之外的任何路径。
另外,您可能不想搜索“libcurl”,只需搜索“curl”即可。 CMake 在 UNIX 系统上为您添加“lib”。欲了解更多信息,请运行cmake --help-variable CMAKE_FIND_LIBRARY_PREFIXES
如果您想更改find_library
的默认缓存行为并在每次运行CMake 时强制搜索,请先使用unset
:
unset(MYCURL CACHE)
find_library(MYCURL NAMES curl HINTS $MY_CURL_DIR NO_DEFAULT_PATH)
【讨论】:
以上是关于CMake 在错误的路径上查找库的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)
Android NDK 开发CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )
Android NDK 开发CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )