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

一般的使用示例:

./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 呢

你可能感兴趣的:(GameEngineDev,c++,cmake)