CMakeLists.txt相互交叉引用
我正在尝试将项目从自定义构建脚本迁移到cmake。源结构大致如下所示:CMakeLists.txt相互交叉引用,cmake,circular-dependency,Cmake,Circular Dependency,我正在尝试将项目从自定义构建脚本迁移到cmake。源结构大致如下所示: src | +-CMakeLists.txt | +-generated | | | +-CMakeLists.txt | | | +-database | | | +-... | +-main | +-CMakeLists.txt | +-database | +-... add_subdirectory("generated") add
src
|
+-CMakeLists.txt
|
+-generated
| |
| +-CMakeLists.txt
| |
| +-database
| |
| +-...
|
+-main
|
+-CMakeLists.txt
|
+-database
|
+-...
add_subdirectory("generated")
add_subdirectory("main")
generated/database
中的源文件将自动生成cmake
似乎能够做到这一点(这不是问题的一部分),但我想知道如何才能使它以正确的顺序构建内容main/database
包含自动生成文件中使用的框架。但是,main
中还有其他文件夹依赖于生成的源。如果我这样构造顶级CMakeLists.txt
:
src
|
+-CMakeLists.txt
|
+-generated
| |
| +-CMakeLists.txt
| |
| +-database
| |
| +-...
|
+-main
|
+-CMakeLists.txt
|
+-database
|
+-...
add_subdirectory("generated")
add_subdirectory("main")
我不能将generated/CMakeLists.txt
中的main/database
称为依赖项
总的来说,我的印象是cmake
迫使我根据文件的依赖关系来构造文件,但我希望保留当前的布局-项目中的依赖关系太复杂,无法将它们映射到文件系统层次结构
我应该避免add_子目录
而将所有内容都写入顶级CMakeLists.txt
?看来这应该是可能的。还是有别的办法解决这个问题
Overall, I have the impression that cmake forces me to structure
my files according to their dependencies
如果CMake具有目标A依赖于目标B的信息(例如
target\u link\u库(A B)
)B将首先构建,然后是A。
如果使用生成的源,CMake将无法获取依赖项信息
您需要使用提供它
从文件:
Adding dependencies with this command can be used to make sure one target
is built before another target.
换句话说,CMake文件中的顺序应该无关紧要。CMake将根据每个目标的依赖关系确定正确的顺序。请仔细说明。