SConsの並列ビルドでディレクトリの依存関係に問題があります。次の(簡略化された)階層にある単一のSConstructを持つ2つのプロジェクトについて考えてみます。
- SConstruct
- project1
- src
- project2
- src
- build
- project1
- project2
- dist
- project1
- project2
project1とproject2はそれぞれ、関連するビルドディレクトリ(バリアントdirを使用)の下にビルドされることになっており、いくつかのターゲットを関連するdistディレクトリの下にインストールする必要があります。
プロジェクト2は、プロジェクト1の距離に依存します。私はこの依存関係を次のDepends()
ようなステートメントを使用して明示的に述べました:
Depends('project2', 'dist/project1')
非並列ビルドを使用する場合、問題はありません。プロジェクト1が完全にビルドされ、ターゲットがdist
ディレクトリにインストールされてから、プロジェクト2がビルドされます。ただし、複数のジョブ(4)を使用すると、プロジェクト2は、プロジェクト1のディレクトリInstall()
にインストールする必要のあるファイルに対して実行されているビルダーと同時にビルドされます。dist
だから、私の質問は次のとおりです。
Depends(project2, dist/project1)
ステートメントは、ディレクトリの作成を指しますか、dist/project1
それともすべてのディレクトリの子の構築の完了を指しますか?- この問題をどのように解決すればよいですか?
どうもありがとうございます、
BugoK。