首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当源文件已经在本地存在时,CMake - FetchContent的备用选项

当源文件已经在本地存在时,CMake - FetchContent的备用选项
EN

Stack Overflow用户
提问于 2022-10-19 10:03:52
回答 1查看 52关注 0票数 0

我尝试使用cmake在本地构建ORTools github包,它构建时没有任何错误。然而,我们计划最终使用的环境没有出站网络连接。我看到的问题是,https://github.com/google/or-tools/blob/v9.4/cmake/dependencies/CMakeLists.txt执行一个Git来下载依赖项并添加它们。由于没有出站网络访问,此步骤失败,我无法构建依赖项。为了避免这种情况,我们计划手动下载依赖项并将它们添加到https://github.com/google/or-tools/blob/v9.4/cmake/dependencies/文件夹中。我对CMake非常陌生,我不知道需要做什么更改才能适应这种情况。

例如,如果我克隆了Zlib v1.2.11存储库并将其添加到https://github.com/google/or-tools/blob/v9.4/cmake/dependencies/中,那么需要将以下代码片段更改为什么?

代码语言:javascript
运行
复制
# ##############################################################################
# ZLIB
# ##############################################################################
if(BUILD_ZLIB)
  message(CHECK_START "Fetching ZLIB")
  list(APPEND CMAKE_MESSAGE_INDENT "  ")
  FetchContent_Declare(
    zlib
    GIT_REPOSITORY "https://github.com/madler/ZLIB.git"
    GIT_TAG "v1.2.11"
    PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/ZLIB.patch")
  FetchContent_MakeAvailable(zlib)
  list(POP_BACK CMAKE_MESSAGE_INDENT)
  message(CHECK_PASS "fetched")
endif()

可以使用FetchContent_Declare指向已经包含源文件的目录吗?还有别的选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-19 15:19:58

您可以为SOURCE_DIR指定FetchContent_Declare参数并省略下载选项:

代码语言:javascript
运行
复制
FetchContent_Declare(
    zlib
    SOURCE_DIR <path/to/existing/directory>
    PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/ZLIB.patch"
)

这与添加命令的工作方式相同,FetchContent_Declare接受该命令的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74123491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档