5

6000 以上のソース ファイルを持つ巨大な再帰的な makefile プロジェクトの変更に取り組んでいます。これらはすべて clearcase で制御されています。ソース ツリー全体をコピーしたくないので、変更したソース ファイルのみを含む新しいプロジェクトを作成し、変更したツリーに存在しない場合は元のツリーからソースを取得しようとしています。

ディレクトリ構造

ModDir各フォルダーがローカルに存在するかどうかを確認し、存在する場合はそのフォルダーで make を実行するように、既に makefile を変更しています。それ以外の場合は、で make を実行しsourceDirます。私の問題は、サブディレクトリのメイクファイルにあります。

各サブディレクトリ makefile には、そのモジュールに必要なすべてのソース ファイルのリストが含まれています。ファイルが存在する場合はローカルでビルドする方法を見つける必要がありますSourceDir/subdir

つまり、私のイメージでは、Dir1makefile を からビルドし、他のファイルを からビルドする必要がF1ありModDir/Dir1/F1ますSourceDir/Dir1/F2-F3

VPATH を使用して、make にソース ファイルを両方の場所 (ModDirもちろん最初に) に配置するように指示しようとしましたが、これは美しく機能します。ただし、make はオブジェクト ファイルが にあると想定しているためModDir、 に組み込まれているオブジェクト ファイルを見つけることができませんSourceDir

また、ビルド前のルールを作成して、メイク ファイル リストを bash で変更しようとしましたが、それが可能かどうかもわかりません。

ModDirソース ファイルが存在する場合 ( )、そうでない場合( ) に、 make を使用して 1 つのディレクトリからビルドするにはどうすればよいSourceDirですか?

4

1 に答える 1

1

最も簡単な方法は、「if ... then ... else」ロジックを外部の bash またはバッチ (使用する OS に関係なく) スクリプトに配置し、swapmakefileを呼び出す前に行うことです。make

于 2013-06-20T05:56:08.137 に答える