2011-01-24 53 views
13

Makefileのforeachループ内で実行する改行を挿入することはできますか?Makefile 'foreach'ループに改行を追加する

現在、私は次のようしている:今

$(foreach my_lib,$(MY_LIBS),$(call my_func,results,boxer,$(my_lib))) 

、私が持っていると仮定:

MY_LIBS = lib1 \ 
      lib2 

上記foreachループは、と評価されます:

lib1 lib2 

私は希望これを評価する:

lib1 
lib2 

これを達成するには、foreachループに改行を挿入することはできますか?

ありがとうございます。

+2

愚かなQ時間:なぜ改行が必要ですか? –

+0

私の実際のMakefileでは、 "m_func"は "lib1"と "lib2"を "make ... lib"コマンドに展開します。したがって、行が "make ... lib1 make ... lib2"と評価された場合、実行は失敗します。 – DuneBug

答えて

25
define \n 


endef 

$(error Here is a message${\n}with embedded${\n}newlines.${\n}${\n}hooray!) 

あなたは$(subst...)のようなもので${\n}を使用することができます。

+1

これは私の問題を解決しました。ありがとう! – DuneBug

0

あなたはループから複数行のメイクファイルコマンドを生成するより複雑なケースでは、

define MY_LIBS 
lib1 
lib2 
endef 

を使用してこれを行うことができ、あなたはeval機能を使用する必要があります。

+1

残念ながら、MY_LIBSマクロは、ルートMakefileに含まれる複数のMakefileにまたがって定義されています。インクルードされたMakefilesに "+ ="を付けてMY_LIBSマクロに追加します。したがって、私は "定義"と "endef"は私のために働くとは思わない。この問題を解決するために "eval"の使い方をもっと見ることができます。 – DuneBug

関連する問題