我正在尝试使用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}
正在查找的位置。有什么想法吗?
答案 0 :(得分:7)
您是否在两次尝试之间删除了CMakeCache.txt
?或者更具体地说,MYCURL
中的CMakeCache.txt
条目。 (此文件应存在于您调用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)