如何将值附加到makefile中变量的开头?

时间:2012-09-20 16:48:30

标签: makefile

我有一个名为code/的文件夹,其中包含多个.cpp个文件,这些文件都需要编译到.o个版本中并放入object/文件夹中。我在定义正确的变量名时遇到了一些问题......

首先,我定义了一些路径:

OBJPATH=object#All compiled .o files need to be placed here.
CODEPATH=code#All .cpp and .hpp header files reside here.

然后,我尝试从CODEPATH中提取所有文件名:

SRC=$(wildcard $(CODEPATH)/*.cpp)

然后,SRC的值为code/A.cpp code/B.cpp code/C.cpp。我想摆脱code前缀,最后将其替换为$(OBJPATH),其结果为object/。我最初尝试过这个:

TMP=$(SRC:.cpp=.o)
OBJ=$(TMP:$(CODEPATH)=$(OBJPATH))

但是,事实证明,这不起作用,因为$(var:a=b)功能只会替换变量末尾的字符串,而不是任意点。

如果我能找到摆脱code/前缀的方法,我的问题就会消失,那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

你可以使用模式匹配替换(这可能不是GNU所说的那样):

OBJ=$(TMP:$(CODEPATH)/%=$(OBJPATH)/%)

您还应该能够一步完成,而不需要中间TMP

OBJ=$(SRC:$(CODEPATH)/%.cpp=$(OBJPATH)/%.o)