標籤

C++ (12) Linux (6) MacOSX (4) Makefile (3) Matlab (3) Ubuntu (3) Android (2) C (1) Refactoring (1)

2012年4月7日 星期六

[Makefile] wildcard addprefix addsuffix

今天要講的是wildcard、添加前綴後綴的addprefix和addsuffix

可以參考:跟我一起寫Makefile:概述


wildcard用法
舉例:SRC=$(wildcard lib/*.cpp)
透過wildcard可以list (ls)出所有放在資料夾lib下的cpp檔

addprefix的用法則是
$(addprefix ,)
的每一個空白隔開的項目加上前綴
舉例:$(addprefix src/, foo.cpp boo.cpp)
如此一來你就會得到src/foo.cpp src/boo.cpp

addsuffix的用法同上
只不過是加在的後面而非前面

這邊隨便舉個範例好了
譬如說你想要compile所有位在lib/和lib/algebra/下的cpp檔
那你可以試試看以下方法

LIBDIR = lib/ lib/algebra/
TEMP = $(addsuffix *.cpp, $(LIBDIR))
LIB_SRC = $(wildcard $(TEMP))

再搭上字串詞綴代換和內隱規則
(不懂的可以去參考連結那找)

OBJ = $(LIB_SRC:.cpp=.o)
#將所有檔名的.cpp換成.o

%.o : %.cpp %.h
       g++ -c $<

靈活搭配一下可以說是妙用無窮

沒有留言:

張貼留言