[解決済み】なぜmakeはターゲットが最新だと思うのですか?
2022-01-27 08:36:59
質問
これは私のMakefileです。
REBAR=./rebar
REBAR_COMPILE=$(REBAR) get-deps compile
all: compile
compile:
$(REBAR_COMPILE)
test:
$(REBAR_COMPILE) skip_deps=true eunit
clean:
-rm -rf deps ebin priv doc/*
docs:
$(REBAR_COMPILE) doc
ifeq ($(wildcard dialyzer/sqlite3.plt),)
static:
$(REBAR_COMPILE) build_plt analyze
else
static:
$(REBAR_COMPILE) analyze
endif
を実行することができます。
make compile
を複数回実行すると
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile
./rebar get-deps compile
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
しかし、なぜか
make test
は常に
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make test
make: `test' is up to date.
がコンパイルされていない場合でも 問題は、なぜか?
同じコマンドを直接実行すると動作します。
aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ ./rebar get-deps compile skip_deps=true eunit
==> erlang-sqlite (get-deps)
==> erlang-sqlite (compile)
Compiled src/sqlite3_lib.erl
Compiled src/sqlite3.erl
==> erlang-sqlite (eunit)
...
解決方法は?
という名前のファイル/ディレクトリがあるかもしれません。
test
をディレクトリに追加します。このディレクトリが存在し、より新しい依存関係がない場合、このターゲットはリビルドされません。
このようなファイルとは関係のないターゲットを強制的にリビルドするには、次のようにニセモノにする必要があります。
.PHONY: all test clean
ここで、すべてのニセモノターゲットを宣言できることに注意してください。
ニセモノのターゲットとは、実際にはファイル名ではなく、明示的なリクエストをしたときに実行されるレシピの名前に過ぎないものです。
関連
-
[解決済み】makeコマンドのエラー makefile:18: *** missing separator. 停止する [重複]。
-
[解決済み】Makeエラー:セパレータがない
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み] ターゲットが指定されていない場合、「make」アプリはどのようにしてビルドするデフォルトターゲットを知るのですか?
-
[解決済み] makefile の "ifeq" 条件構文
-
[解決済み] makefileでLDFLAGSを使用する方法
-
[解決済み】gcc makefileのエラー。"No rule to make target ..." (ターゲットにするルールがありません)
-
[解決済み] Makefileの変数が前提条件として設定されていることを確認する方法は?
-
[解決済み] なぜシェルスクリプトではなくmakeを使うのか?
-
[解決済み] なぜ誰もJavaのmakeを使わないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmakefile *** セパレータがありません。
-
[解決済み] Makefile での .PHONY の使用方法
-
[解決済み] PATH "文字列を表示するエコーファイルの作成
-
[解決済み] makeファイルの@!の意味は?
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み】makefileに'cd'コマンドを記述するには?
-
[解決済み] Makefileの変数が前提条件として設定されていることを確認する方法は?
-
[解決済み] CLionでCMakeの代わりにローカルのmakefileを使用する
-
[解決済み] 別のMakefileからMakefileを呼び出すには?
-
[解決済み] Makefileの:=と=の違いは何ですか?