Make-Filesでif-thenステートメントとforループを使用する方法を誰かが説明できますか?例のある良いドキュメントを見つけることができないようです。
条件付きフォーム
シンプル
conditional-directive
text-if-true
endif
やや複雑
conditional-directive
text-if-true
else
text-if-false
endif
より複雑
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
条件付きディレクティブ
等しい構文
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
等しくない場合の構文
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
定義された構文の場合
ifdef variable-name
定義されていない場合の構文
ifndef variable-name
foreach関数
foreach関数の構文
$(foreach var, list, text)
foreachセマンティクス
「リスト」内の空白で区切られた各Wordに対して、「var」という名前の変数がそのWordに設定され、テキストが実行されます。
以下に例を示します。
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
これには、異なるバージョンのMakeの構文がわずかに異なるという警告の言葉が付いていることに注意してください。
GNU make documentation を試しましたか?例付きの条件に関するセクション全体があります。
多くの場合forループが表示されますが、通常は必要ありません。シェルに頼らずにforループを実行する方法の例を次に示します
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run $@ > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd $@ && $(MAKE)