我们正在追溯性地将构建块上层结构添加到我们的代码库中。这意味着新的命名空间规则(cpp)和新的文件夹结构。
我的问题涉及到我们的make文件环境(Cmake)的变化以及我们应该如何处理这种变化(我们完全混淆了)。
我们的目标:
概述:
时:
+-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
我们不希望将块构建工件信息添加到我们的全局列表文件中(例如add aux_source_directory,include_directories)。原因:此方法有太多块,我们希望使用不同的块配置构建。
答案 0 :(得分:0)
您可以使用CMake模块ExternalProject
来驱动彼此独立的项目的编译。您可以拥有一个顶级CMakeLists.txt
,其中包含例如:
include(ExternalProject)
externalproject_add(block1 URL ${CMAKE_CURRENT_SOURCE_DIR}/block1)
externalproject_add(block2 URL ${CMAKE_CURRENT_SOURCE_DIR}/block2)
然后,您创建一个使用此顶级CMakeLists.txt
配置的构建目录;它将有两个目标block1
和block2
,其中每个目标将独立构建相应的项目。