一般的使用示例:
./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 呢