2017-04-30 12 views
0

foreachループで複数のコマンドを追加することはできますか?私は単純なif-else条件を追加しようとしていますが、残念ながらそれについての良い説明は見つかりません。Makefile:foreachの条件式

TARGET_LIBSのForeachライブラリで、libに "test"という単語が含まれているかどうか確認したいと思います。はいの場合は、TEST_COPY_RULEを呼び出します。それ以外の場合は、LIB_COPY_RULEを呼び出します。

はあなたに

+0

'ifneq'ディレクティブ、関数ではなく、そうありません。あなたは 'if'関数を使うことができます。いずれにしても、これは[XY](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の問題のように見えますが、ソリューション単独ではなく、解決しようとしていることを説明する必要があります。 – user657267

+0

ありがとうございます。私は自分の質問を編集してXY問題にならないようにしました。もしまだそれが私に知らせてください – Ofa

+0

あなたは元の質問を言い換えて、それは本当に変更されていませんでした。最初に2つの別々のルールが必要なのはなぜですか? – user657267

答えて

1

ありがとうございました。このMakefileのは、積極的にあなたの質問に答えます。

TARGET_LIBS := a testb ctest d e 
TEST_COPY_RULE = $(info TEST_COPY $1) 
LIB_COPY_RULE = $(info LIB_COPY $1) 
IS_TEST = $(findstring test, $L) 

$(foreach L, $(TARGET_LIBS), $(if $(call IS_TEST,$L),$(call TEST_COPY_RULE, $L),$(call LIB_COPY_RULE, $L)))