6000 以上のソース ファイルを持つ巨大な再帰的な makefile プロジェクトの変更に取り組んでいます。これらはすべて clearcase で制御されています。ソース ツリー全体をコピーしたくないので、変更したソース ファイルのみを含む新しいプロジェクトを作成し、変更したツリーに存在しない場合は元のツリーからソースを取得しようとしています。
ModDir
各フォルダーがローカルに存在するかどうかを確認し、存在する場合はそのフォルダーで make を実行するように、既に makefile を変更しています。それ以外の場合は、で make を実行しsourceDir
ます。私の問題は、サブディレクトリのメイクファイルにあります。
各サブディレクトリ makefile には、そのモジュールに必要なすべてのソース ファイルのリストが含まれています。ファイルが存在する場合はローカルでビルドする方法を見つける必要がありますSourceDir/subdir
。
つまり、私のイメージでは、Dir1
makefile を からビルドし、他のファイルを からビルドする必要がF1
ありModDir/Dir1/F1
ますSourceDir/Dir1/F2-F3
。
VPATH を使用して、make にソース ファイルを両方の場所 (ModDir
もちろん最初に) に配置するように指示しようとしましたが、これは美しく機能します。ただし、make はオブジェクト ファイルが にあると想定しているためModDir
、 に組み込まれているオブジェクト ファイルを見つけることができませんSourceDir
。
また、ビルド前のルールを作成して、メイク ファイル リストを bash で変更しようとしましたが、それが可能かどうかもわかりません。
ModDir
ソース ファイルが存在する場合 ( )、そうでない場合( ) に、 make を使用して 1 つのディレクトリからビルドするにはどうすればよいSourceDir
ですか?