我在内部创建了多个链接到图像的静态库。
我想使用一个通过使用 检索的外部库FetchContent_Declare。
proj
/lib1
CMakeList.txt
/lib2
CMakeList.txt
/exe
CMakeList.txt
/external
CMakeList.txt (FetchContent_Declare)
/build
/deps
/externallib1 (auto generated)
CMakeList.txt
Run Code Online (Sandbox Code Playgroud)
我想在 /proj/CMakeList 中使用以下内容:
include_directories(externallib1/include)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何找出外部库实际下载的目录?
squ*_*les 14
FetchContent 模块提供了两种主要方法来在主 CMake 构建中填充外部包的内容:
FetchContent_MakeAvailable:更简单且通常是首选的方法FetchContent_GetProperties和FetchContent_Populate:一种提供更精确控制的方法,允许自定义变量/策略无论您使用哪种方法,<lcname>_SOURCE_DIR都应该定义包的变量,该变量指向下载外部包的顶级源目录。在本例中,<lcname>是提供给上述命令之一的包的小写名称。
CMake 通常会将外部包下载到您的构建目录中:
${CMAKE_BINARY_DIR}/_deps/<package-name>-src
Run Code Online (Sandbox Code Playgroud)
但您可以使用上述<lcname>_SOURCE_DIR变量来引用该位置。
例如,对于googletest,一种简单的用法可能如下所示:
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.8.0
)
FetchContent_MakeAvailable(googletest)
Run Code Online (Sandbox Code Playgroud)
因此,该googletest_SOURCE_DIR变量将指向下载的存储库的顶级源目录googletest,并且您可以googletest使用如下所示的内容包含标头:
include_directories(${googletest_SOURCE_DIR}/googletest/include/gtest)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11329 次 |
| 最近记录: |