我有使用 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。我应该如何正确设置建筑物,以免发生冗余编译?