作業ディレクトリの外部からファイルをコピーすることによって生成される複数のターゲットを持つmakefileがあります。
a.tex : $(wildcard /foo/work1/a.tex)
cp -p $< $@
b.tex : $(wildcard /foo/work2/b.tex)
cp -p $< $@
$(wildcard)にアクセスできないシステムでMakeを実行することがあるため、これを使用し/fooます。
cp -p $< $@すべてのルールに対してコマンドを繰り返さないようにするための最良の方法は何ですか?いくつかのオプション:
%.tex : %.texルールを設定します。これは機能しますが、具体的に示されていないターゲットにも適用されるため、次のような警告がたくさん表示されます。make: Circular a.tex <- a.tex dependency dropped.- を使用してコマンドのシーケンスを定義します
define。コマンドは1行しかないため、これは無意味に思えます。したがって、すべてのルールにコピーする代わりに、シーケンスをcp $< $@定義してすべてのルールにコピーします。cp-depcp-dep - コマンドを変数として定義して、次のことができるようにします
a.tex : $(wildcard /foo/work1/a.tex); $(CP-DEP) - 追加のルールとしてターゲット名を複製します。
a.tex b.tex : ; cp -p $< $@。エラーを起こしやすい。 - コピーして貼り付けるだけです。不格好ですが、効果的で理解しやすいです。