2011-01-24 25 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時間:你爲什麼需要換行符? – 2011-01-24 23:20:48

+0

在我的實際Makefile中,「m_func」將「lib1」和「lib2」擴展爲「make ... lib」命令。因此,如果該行被評估爲「make ... lib1 make ... lib2」,那麼執行失敗。 – DuneBug 2011-01-25 00:08:55

回答

25
define \n 


endef 

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

您可以使用的東西像${\n}$(subst...)

0

您可以通過使用

define MY_LIBS 
lib1 
lib2 
endef 

在更復雜的情況下,如果你想生成從環多的Makefile命令做到這一點,你就需要使用eval功能。

+1

不幸的是,MY_LIBS宏是在包含在根Makefile中的多個Makefile中定義的。我們在包含的Makefiles中使用「+ =」添加到MY_LIBS宏。因此,我認爲「定義」和「功能」不適合我。我可以更多地關注如何使用「eval」來解決這個問題。 – DuneBug 2011-01-25 00:10:37