0

これは、GNU Make 依存関係の解決の問題です。

私の問題は、ソース ファイルをリモート ファイル サーバーからスクラッチ ディスクにコピーすることです (これにより、ビルド プロセスが 50% 高速化されます)。ファイルのコピーに失敗した場合は、ファイル サーバーからソース ファイルを使用したいと考えています。

私は vpath メカニズムを使用しようとしましたが、問題は、私が理解している限り、デフォルトで make が現在のディレクトリでソース ファイルの検索を開始し、そこにファイルが見つからない場合にのみ、ディレクトリを調べることです。 vpath とともにリストされます。

現在のディレクトリを調べる前に、最初に vpath ディレクトリを調べることは可能ですか? それとも、vpath ディレクトリだけを調べますか (そして、現在のディレクトリを vpath に明示的かつ動的に追加しますか)?

私が考えることができる唯一の方法は、ディレクトリを一時的に変更して、make が常にソース ファイルを見つけられないようにすることです。

4

1 に答える 1

0

サーバー上のソース ディレクトリへのパスを確認します。「/server/someplace/src/」だとします。また、現在のディレクトリに "src" ディレクトリがないとします (ある場合は、このメソッドを微調整するだけです)。スクラッチ ディスクのソース ディレクトリへのパスが「/src/」で終わっていることを確認してください (「/scratch/wednesday/src/」など)。次に、これを行うことができます:

SCRATCH_PATH = /scratch/wednesday/
SERVER_PATH = /server/someplace/

VPATH = $(SCRATCH_PATH) $(SERVER_PATH)

%.o: src/%.cc
    $(CC) blah blah blah
于 2011-04-27T16:39:50.980 に答える