2012-03-20 90 views
2

我试图使用CMake来使用本地32位版本的cURL而不是安装的64位版本。当我使用CMake命令find_library时,它仍然返回/usr/lib/x86_64-linux-gnu/libcurl.so的路径。我试过使用标志NO_DEFAULT_PATH和NO_SYSTEM_ENVIRONMENT_PATH,但仍然无法强制它首先在本地查找。我的代码如下:CMake在错误路径上查找库

find_library(MYCURL NAMES libcurl 
        HINTS ${MY_CURL_DIR} 
        NO_SYSTEM_ENVIRONMENT_PATH 
        NO_DEFAULT_PATH) 

在那里我已经指定(及验证)是${MY_CURL_DIR}正在寻找在正确的位置。有任何想法吗?

回答

6

是否在删除尝试之间的CMakeCache.txt?或者更具体地说,您的CMakeCache.txt中的MYCURL条目。 (这个文件应该存在于你调用CMake的目录中)。

如果find_library成功找到该库,则进一步执行CMake不会重试找到相同的库。

在您的命令中,NO_SYSTEM_ENVIRONMENT_PATH选项是多余的 - NO_DEFAULT_PATH停止搜索除${MY_CURL_DIR}以外的任何路径。

此外,您可能不想搜索“libcurl”,只需“卷曲”即可。 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)