program_OBJS := ${program_SRCS:.cpp=.o}
我想追加.o
將每個文件名,而不是與.o
更換.cpp
。
我如何做到這一點?
program_OBJS := ${program_SRCS:.cpp=.o}
我想追加.o
將每個文件名,而不是與.o
更換.cpp
。
我如何做到這一點?
要只是一些東西附加到空間分隔的項目列表,你可以使用:
program_OBJS := $(foreach program,$(program_SRCS),$(program).o)
要使用替代方法(如你在你的問題顯示):
program_OBJS := $(program_SRCS:.cpp=.cpp.o)
但該列表必須包含的.cpp足夠了,或者替換不會發生。
只是一個猜測program_OBJS := ${program_SRCS:.cpp=.cpp.o}
較短的替代,使用模式替換:program_OBJS := ${program_SRCS:%=%.o}
另一種方式的擴展,無論工作:${program_SRCS:=.o}
如何:
STRING1:="foo"
STRING2:="bar"
STRING1:=$(STRING1)$(STRING2)
顯然,你可以將結果保存到一個新變量中。
爲什麼太空問題? – 2010-06-21 09:50:15
我以爲'$(foreach)'從字面上消耗了第三個參數並連接了結果。我只是測試它,它會自動添加一個空格,如果省略,所以它不是必需的。 (我會從我的答案中刪除註釋並更新我自己的Makefiles ...;)) – Veger 2010-06-21 10:18:02