gpt4 book ai didi

cmake - 如何找到通过 FetchContent 下载的包的目录?

转载 作者:行者123 更新时间:2023-12-04 15:20:57 29 4
gpt4 key购买 nike

我在内部创建了多个静态库,这些库链接到图像中。
我想使用通过使用 FetchContent_Declare 检索的外部库.

proj
/lib1
CMakeList.txt
/lib2
CMakeList.txt
/exe
CMakeList.txt
/external
CMakeList.txt (FetchContent_Declare)
/build
/deps
/externallib1 (auto generated)
CMakeList.txt
我想在/proj/CMakeList 中使用以下内容:
include_directories(externallib1/include)
但是我不知道如何找出外部库实际下载的目录?

最佳答案

FetchContent 模块为 populating the content 提供了两种主要的方法。主 CMake 构建中的外部包:

  • FetchContent_MakeAvailable :更简单且通常首选的方法
  • FetchContent_GetProperties FetchContent_Populate :一种提供更精确控制的方法,允许自定义变量/策略

  • 无论您使用哪种方法, <lcname>_SOURCE_DIR应该定义包的变量,它指向下载外部包的顶级源目录。在这种情况下, <lcname>是提供给上述命令之一的包的小写名称。
    CMake 通常会在此处将外部包下载到您的构建目录中:
    ${CMAKE_BINARY_DIR}/_deps/<package-name>-src
    但你可以使用前面提到的 <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)
    因此, googletest_SOURCE_DIR变量将指向下载的顶级源目录 googletest存储库,您可以包含 googletest使用类似以下内容的标题:
    include_directories(${googletest_SOURCE_DIR}/googletest/include/gtest)

    关于cmake - 如何找到通过 FetchContent 下载的包的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63311116/

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