Boost.Build を使用してビルドされた C++ プロジェクトがあります。プロジェクトは 3 つのサブプロジェクトで構成されています。
. [根]
\ - ソース
\ - 一般
\-- 構成
\-- config.cpp
\-- project_1
\-- Jamfile.jam
\-- project_2
\-- Jamfile.jam
\-- project_3
\-- Jamfile.jam
\-- Jamroot.jam
Jamroot.jam:
プロジェクト my_project
: 要件
マルチ
デバッグ:デバッグ
: デフォルトビルド
静的
: ビルドディレクトリ ビン
;
エイリアス project_1 : source/project_1 ;
エイリアス project_2 : source/project_2 ;
エイリアス project_3 : source/project_3 ;
インストール ディストリビューション: project_1 project_2 project_3
:EXE上
;
各プロジェクトには、次のテンプレートに従って Jamfile.jam があります。
プロジェクト project_N
: 要件
CONFIG_DEFINE_1=
CONFIG_DEFINE_2=
;
lib config : [グロブ ../common/config/*.cpp] ;
exe project_N
: [グロブ *.cpp] 構成
:
;
config.cppは定義CONFIG_DEFINE_1とCONFIG_DEFINE_2条件付きコンパイルを使用するため (実際には単に定数です)、configプロジェクトごとに個別のバージョンのライブラリがあります。
問題は、このようなアプローチconfigでは、ファイルが変更されたかどうかに関係なく、プロジェクト全体がビルドされるたびにライブラリが再ビルドされることです。つまり、最初にすべてをコンパイルしてリンクしてビルドし、2 回目には何も変更せずにビルドします。configそれぞれのライブラリのみがビルドされますproject_N。冗長なコンパイルが発生しないように、建物を適切にセットアップするにはどうすればよいですか?