作为CMake项目的一部分建设第三方图书馆

作为CMake项目的一部分建设第三方图书馆,cmake,Cmake,我有一个顶级的CMakeLists.txt文件,它构建了一个名为Camellia的库,并且在与Camellia链接的子目录中有几个可执行文件。我想在Camellia/TPL/XDMF下添加一个名为XDMF的第三方库作为Camellia的依赖项。幸运的是,XDMF已经在CMake构建系统上,但是当我使用 add_subdirectory(TPL/Xdmf) 然后 add_library(Camellia ${LIB_SOURCES} ${HEADERS}) 它在build/TPL/Xdmf/b

我有一个顶级的CMakeLists.txt文件,它构建了一个名为Camellia的库,并且在与Camellia链接的子目录中有几个可执行文件。我想在Camellia/TPL/XDMF下添加一个名为XDMF的第三方库作为Camellia的依赖项。幸运的是,XDMF已经在CMake构建系统上,但是当我使用

add_subdirectory(TPL/Xdmf)
然后

add_library(Camellia ${LIB_SOURCES} ${HEADERS})

它在build/TPL/Xdmf/bin目录中构建Camellia,而不是像没有add_子目录(TPL/Xdmf)那样构建Camellia。为什么添加子目录会改变Camellia的构建目录,我该如何修复它?还有,一旦我弄明白了这个问题,我如何确保Camellia正在链接Xdmf?

我认为
ExternalProject\u Add(…)
就是您想要的

请查看哪一个描述了类似问题。

可能重复的