2009-08-24 79 views
30

我有這樣的文件路徑的列表:makefile:如何向基本名稱添加前綴?

FILE_PATH := a1.so a2.so bla/a3.so bla/a3.so bla/blo/a4.so.... 

我需要添加前綴的基本部分,以獲得:

FILE_PATH_PREFIX := liba1.so liba2.so bla/liba3.so bla/liba3.so bla/blo/liba4.so.... 

什麼想法?

回答

55

看看Make的addprefix函數。

下面是一個我們使用addsuffix將obj文件放置在 以下目錄下的示例源代碼。

 
SOURCE += MainThread.cpp 
SOURCE += Blah.cpp 

OBJ=$(join $(addsuffix ../obj/, $(dir $(SOURCE))), $(notdir $(SOURCE:.cpp=.o))) 

從化妝手冊: http://www.gnu.org/software/make/manual/make.html

 
$(addprefix prefix,names...) 

The argument names is regarded as a series of names, separated by whitespace; 
prefix is used as a unit. The value of prefix is prepended to the front of each 
individual name and the resulting larger names are concatenated with single 
spaces between them. For example, 

       $(addprefix src/,foo bar) 

produces the result `src/foo src/bar'. 
+1

謝謝啊!我知道addprefix/addsuffix函數,但我錯過了加入函數... – dm76 2009-08-24 14:19:55

+0

我同意dm76的評估,確實這個好答案的關鍵值是join()。 – 2017-07-18 20:04:33