CMake在错误的路径上查找库

Sam*_*sey 2 curl cmake

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

我指定(并验证)${MY_CURL_DIR}正在寻找正确位置的地方.有任何想法吗?

Fra*_*ser 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)
Run Code Online (Sandbox Code Playgroud)