CMake FetchContent 在处理仅头文件库上存在困难

博客讨论了CMake使用中处理仅头文件库的问题。FetchContent_MakeAvailable自动配置link和include时,对仅头文件库无法设置好include,按官方文档设置相关选项也无用。最后提出对于仅头文件库可能不能用FetchContent,不如全用submodule。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般的使用示例:

./cmake/dependencies.cmake

include(FetchContent)
set(FETCHCONTENT_QUIET OFF)

FetchContent_Declare(spdlog
    GIT_REPOSITORY https://github.com/gabime/spdlog.git
    GIT_TAG "origin/v1.x"
    GIT_SHALLOW ON
    GIT_PROGRESS ON)

使用时

FetchContent_MakeAvailable(spdlog)

target_link_libraries(${MY_TARGET_NAME}
    PUBLIC
    spdlog::spdlog)

FetchContent_MakeAvailable 会自动配置 link 和 include,但是在处理仅头文件库的时候,他不会设置好 include

我猜可能是因为他没有编译出一个可用的 target?但是总之找了各种方法都没用

根据官方文档 https://cmake.org/cmake/help/latest/module/FetchContent.html

CONFIGURE_COMMAND, BUILD_COMMAND 这些选项都会被禁用,所以想要

FetchContent_Declare(...
  GIT_REPOSITORY ...
  GIT_TAG ...
  CONFIGURE_COMMAND ""
  BUILD_COMMAND ""
  )

这样设置是没用的

这样的话,实在不行的话,对于仅头文件库的话,就不能用 FetchContent 了,这样的话,对于第三方库就存在了两种 cmake 的配置方式,令人不爽

那就还不如全部都用 submodule 呢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值