0

makeでコンパイルしようとしています。src と altsrc の 2 つのディレクトリにソースがあります。最初に altsrc でソース ファイルを検索し、次に src を検索するようにします。オブジェクトをディレクトリobsに入れたいです。私の Makefile の関連部分は次のようになります: VPATH=altsrc:src:obj

$(A_OUT): $(OBS)
    $(FORTRAN) -o $(A_OUT) $(OBS) $(LFLAGS)

obs/%.o: %.f
    $(FORTRAN) $(FFLAGS) $< -o $@

この Makefile は実際にはコードを正常にコンパイルしますが、非常に不快な副作用が 1 つあります。それは、各ソース ファイルを見つけて (そしてたくさんあります)、それらを altsrc または srcから make を実行しているディレクトリにコピーすることです。これは本当に厄介で、後で混乱を招きます。これが VPATH マクロの影響であると述べているドキュメントはどこにも見つかりませんでした。誰でもこれを解決する方法を教えてもらえますか? ありがとう。

4

1 に答える 1

0

td.f問題は、Make が RCS に精通しており、ソース ファイル (例: ) を RCS から更新できるかどうか、および更新する必要があるかどうかを確認することです。はい、Make は の使い方を知っていますco。ソース ファイルがそのようなアーカイブ ( のソース ファイルなどaltsrc) にない場合、Make は肩をすくめて作業を続行します。

最も迅速で汚い解決策は、 を使用することmake -rです。これにより、組み込みのルールが無効になり、問題がうまく解決されるはずです...他の場所で組み込みのルールに依存しない限り。

それがうまくいかない場合は、その特定のルールを独自の何もしないルールで上書きするか、ソースを実際に更新するルールで上書きするか、ソースを上書きして、touchMake がそれらを考慮しないようにすることができます。日付を指定するか、RCS ファイルを Make から見えない場所に置くか、または他の 2 つまたは 3 つのオプションを選択してください。

于 2012-05-09T21:39:38.647 に答える