我有使用 Boost.Build 构建的 C++ 项目。该项目由3个子项目组成。
. [根] \ - 资源 \ - 常见的 \-- 配置 \-- 配置.cpp \-- 项目_1 \-- Jamfile.jam \-- 项目_2 \-- Jamfile.jam \-- 项目_3 \-- Jamfile.jam \-- Jamroot.jam
Jamroot.jam:
项目 my_project : 要求 多 调试:调试 :默认构建 静止的 : 构建目录 bin ; 别名 project_1 : source/project_1 ; 别名 project_2 : source/project_2 ; 别名 project_3 : source/project_3 ; 安装 dist : project_1 project_2 project_3 : 在EXE上 ;
根据此模板,每个项目都有 Jamfile.jam:
项目项目_N : 要求 CONFIG_DEFINE_1= CONFIG_DEFINE_2= ; 库配置:[glob ../common/config/*.cpp]; exe项目_N : [ glob *.cpp ] 配置 : ;
config.cpp
使用定义CONFIG_DEFINE_1
和CONFIG_DEFINE_2
条件编译(实际上它们只是常量),因此config
每个项目都有一个单独的库版本。
问题是这种方法会导致config
每次构建整个项目时都重新构建库,无论文件是否更改。即第一次构建所有东西都被编译和链接,第二次构建而不做任何修改 - 只config
为每个构建库project_N
。我应该如何正确设置建筑物,以免发生冗余编译?