[解決済み] makefile で条件規則を使用する
2022-02-27 21:23:02
質問
Makefileの意図を擬似コードで捉え、問題点を指摘する。テスト環境においてより使いやすいMakefileを探しています。Makefileの正しい使い方は、以下のいずれかです。
make CATEGORY=parser TEST=basic.
make ALL
もし、ユーザが以下のようなコマンドを与えた場合、quot;CATEGORY defined TEST undefined"というメッセージが表示され、その逆も表示されるはずです。
make CATEGORY=parser
make TEST=basic
以下の方法でMakefileを記述してみましたが、エラーになります。
help:
echo"Usage: make CATEGORY=<advanced|basic> TEST=<test-case>
echo" make ALL
ifdef CATEGORY
ifdef TEST
CATEGORY_TEST_DEFINED = 1
else
echo "TEST not defined"
else
echo "CATEGORY not defined"
endif
ifeq ($(CATEGORY_TEST_DEFINED), 1)
$(CATEGORY):
cd $(PROJ)/$(CATEGORY)
make -f test.mk $(TEST)
endif
ifdef ALL
$(ALL):
for i in `ls`
cd $$(i)
make all
endif
私が抱いている疑問は
-
Makefile のルールを選択式にできるかどうか(ifdef を使ってルールとターゲットを選択する)。
-
echo は機能しません。echo は正しい使い方をユーザーに教えるべきでしょう。
解決方法は?
問題点は
echo
Make はコマンドでこれをシェルに渡すことはできますが、Make はこれを実行することはできません。使用方法
info
の代わりに
ifdef CATEGORY
$(info CATEGORY defined)
else
$(info CATEGORY undefined)
endif
ルールを条件付きにしたい場合。
ifdef CATEGORY
ifdef TEST
$(CATEGORY):
whatever
else
$(info TEST not defined)
else
$(info CATEGORY not defined)
endif
関連
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み】makefile "そのようなファイルやディレクトリはありません"
-
[解決済み] CygwinでのMakefile
-
[解決済み] makefile の "ifeq" 条件構文
-
[解決済み] makeとmake distの違いは何ですか?
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] makefile の記号 $@ と $< はどういう意味ですか?
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Makefileにループを書くには?
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み] CygwinでのMakefile
-
[解決済み] makeとmake distの違いは何ですか?
-
[解決済み] makefileの "all "は何の略ですか?
-
[解決済み] makefileでLDFLAGSを使用する方法
-
[解決済み] makeファイルの@!の意味は?
-
[解決済み】OSがmakefileを検出する
-
[解決済み] Makefileの変数が前提条件として設定されていることを確認する方法は?
-
[解決済み] GNU MakeのCPPFLAGSとCXXFLAGSの違いについて