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
。冗長なコンパイルが発生しないように、建物を適切にセットアップするにはどうすればよいですか?