我正在尝试使用 git子模块作为项目中的依赖项,并希望将其添加到我的CMake构建中。到目前为止,我的方法是手动构建/安装依赖项,然后使用 find_package()。
我现在希望能够递归地克隆我的存储库,并让CMake构建包括依赖项在内的所有内容。我已经将它们添加为git子模块。我现在使用CMake的新方法,例如因为Assimp是
add_subdirectory(external/assimp)
及以后
target_include_directories(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/external/assimp/include/
)
我不确定这是否是正确的方法,但是至少仍然包含以前的内容。
DCMTK是一个不同的故事。文件夹结构如下:
external/dcmtk
| dcmdata
| | include
| | | dcmtk
| | | | dctk.h
| dcmimgle
| | include
| | | dcmtk
| | | | dcmimage.h
| ...
因此,每个DCMTK模块都位于其自己的文件夹中。通过 find_package(DCMTK),我仍然能够随便添加
#include "dcmtk/dctk.h"
#include "dcmtk/dcmimage.h"
FindDCMTK.cmake做了一些魔术,所以这是可能的,但是我不知道如何在没有find_package()的情况下使它在我的CMakeLists.txt中起作用。什么是正确的方法?