gpt4 book ai didi

c++ - cmake - find_library - 自定义库位置

转载 作者:IT老高 更新时间:2023-10-28 14:01:31 32 4
gpt4 key购买 nike

我目前正在尝试让 CMake 为我的项目运行(在 Windows 上)。我想使用安装所有库的自定义位置。为了让 CMake 知道这条路径,我尝试这样做:

set(CMAKE_PREFIX_PATH D:/develop/cmake/libs)

但是当我试图找到图书馆时

find_library(CURL_LIBRARY NAMES curl curllib libcurl_imp curllib_static)

CMake 找不到它。当我将前缀路径设置为

set(CMAKE_PREFIX_PATH D:/develop/cmake/libs/curl)

...图书馆位于。

所以我的问题是:如何正确配置 CMake 以在自定义位置使用目录结构,如下所示:

D:/develop/cmake/libs/
-> libA
-> include
-> lib
-> libB
-> include
-> lib
-> ...
-> include
-> lib

在“include”中是公共(public)头文件,在“lib”中是编译的库。

希望有人可以帮助我 - 在此先感谢

编辑:我目前的解决方法是,在我搜索库之前执行此操作:

set(CUSTOM_LIBRARY_PATH D:/develop/cmake/libs)
file(GLOB sub-dir ${CUSTOM_LIBRARY_PATH}/*)
foreach(dir ${sub-dir})
if(IS_DIRECTORY ${dir})
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH};${dir})
endif()
endforeach()

但是那样boost的默认模块直到它才会找到它,因为boost的目录结构有点不同。

boost -> include -> boost-1_50 -> *.hpp

当我将内容移动到“boost-1_50”到“包含”时,可以找到该库,但这样就无法处理多个版本,对吧?

最佳答案

最简单的解决方案可能是将 HINTS 添加到每个 find_*请求。

例如:

find_library(CURL_LIBRARY
NAMES curl curllib libcurl_imp curllib_static
HINTS "${CMAKE_PREFIX_PATH}/curl/lib"
)

对于 Boost,我强烈建议使用 FindBoost标准模块并将 BOOST_DIR 变量设置为指向您的 Boost 库。

关于c++ - cmake - find_library - 自定义库位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075371/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com