Makefileを使ってファイルを書きたい static/config.js
次のようにします。
- if
js/config_local.js
存在する場合は、コピーしてstatic/config.js
- そうでなければ、コピー
js/config.js
(常に存在します)static/config.js
これまでのところ、私はこのように見えるものがあります:
# If there"s a config_local.js file, use that, otherwise use config.js
ifneq ($(wildcard js/config_local.js),)
config_file = js/config_local.js
else
config_file = js/config.js
endif
static/config.js: js/config.js js/config_local.js
cp $(config_file) static/config.js
js/config_local.js:
clean:
rm -f static/*
ない場合を除いて、これはほとんどの場合うまくいきます。 js/config_local.js
ファイルと私は実行します make
それから私は js/config_local.js
ファイルと実行 make
繰り返しますが、何もする必要はないと思います。これは空のためだと思います js/config_local.js
Makefileでターゲットにすることはできますが、それを削除すると、ビルドできなくなります。 js/config_local.js
ファイルが存在しません。
私はまた空を削除しようとしました js/config_local.js
ターゲットの設定と依存関係の設定 static/config.js
ターゲットにする js/*.js
しかし、それは私が作成した後に何かをする必要があることに気付かないという同じ問題を抱えています js/config_local.js
ファイル。
回答:
回答№1は2内容ではなくチェックファイルの時間を確認します。 .PHONYは常に操作を強制します。欠点はそれが常にコピーすることです。ファイルの時間を節約するには、-pスイッチを使用します。
.PHONY: static/config.js
static/config.js : $(firstword $(wildcard js/config_local.js js/config.js))
cp -p $< $@