CMake在错误的路径上查找库

时间:2012-03-20 23:56:39

标签: 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)

我已指定(并验证)${MY_CURL_DIR}正在查找的位置。有什么想法吗?

1 个答案:

答案 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)