我正在嘗試使用Make offer的string functions在Makefile中執行一些字符串操作。我希望做我的琴絃兩次轉換,我有一個變量,它列出源文件類似於:Makefile字符串函數可以嵌套嗎?
C_SRCS += \
./src/foo.c \
./src/bar.c \
...
我想利用這個字符串,並將其轉換成一個新的變量保存所有的目標文件。這些對象將被存儲在不同的目錄中,並且明顯將具有.o
擴展而不是.c
。切實他們應該改變來自:
./src/<file>.c
到
./artifacts/src/<file>.o
我可以像兩個規則做到這一點:
OBJS1 := $(C_SRCS:%.c=%.o)
OBJS = $(subst ./,./artifacts/,$(OBJS1))
,將工作很好,但我希望這兩個結合起來規則並刪除中間變量。我想:
OBJS = $($(subst ./,./artifacts/,$(C_SRCS)):%.c=%.o)
和剛剛離開OBJS
空的,我想,也許它會更好,如果我用了兩個完全相同的功能類型的,所以我嘗試:
OBJS = $(subst %.c,%.o,$(subst ./,./artifacts/,$(C_SRCS)))
和執行的嵌套規則只有OBJS
被設置爲./artifacts/src/foo.c ./artifacts/src/bar.c ...
我開始閱讀一些Make文檔,但是我找不到任何有關嵌套字符串函數的信息。是否可以在Makefiles中嵌套字符串函數?如果是的話,我在這裏做錯了什麼?