2
我们追溯地向我们的代码库添加了构件块上层结构。这意味着新的命名空间规则(cpp)和新的文件夹结构。用于构建模块的Cmake(文件夹包含源代码)
我的问题涉及到我们的make文件环境(Cmake)的变化以及我们应该如何处理这种变化(我们完全困惑)。
我们的目标:即增加了块在功能像 方式我们构建
- 一个 “全球性” 的CMakeLists.txt文件。
- 每块构建工件(* .H,*的.cpp ...)应在子文件的CMakeLists.txt被定义里面每个新 块。
概述:
是:
+-src
+--block1.cpp
+--block1_1.cpp
+--block(n+1).cpp
+--CMakeLists.txt <- old global make file
+-include
+--block1.h
+--block1_1.h
+--block(n+1).h
应:
- Block 1
+- src
+-- block1.cpp
+-- block1_1.cpp
+- inlcude
+-- block1.h
+-- block1_1.h
**+- CMakeLists.txt** <- sub list file that handles target req. of Block 1
+ Block 2
+- ... (same structure as 1)
+ Block 3
+- ... (same structure as 1)
+-CMakeLists.txt <- global list file that adds Blocks to target
我们不想加块构建工件的信息为我们的全球列表文件(如添加aux_source_directory,include_directories)。原因是:这种方法有太多的块,我们想用不同的块来配置构建。
我很抱歉,但我不确定要理解您的问题;你想为每个块有不同的构建配置?这意味着顶级'CMakeLists.txt'不能通过调用'add_subdirectory()'来驱动整个项目? – piwi
是吗?这总结了我想要做的事情。或者我想念什么? – Thomas
你真正的问题是什么?由于每个CMakeLists.txt都有自己的子范围,因此使用标准的现代CMake很容易实现。除了作为目标之外,这些街区不需要了解彼此的任何信息。尽可能使用'target_ *'命令。 – utopia