【发布时间】:2014-10-14 08:17:55
【问题描述】:
首先我想指出,我对 makefile 还很陌生,如果我写了一些愚蠢的东西,我很抱歉 :)
我有一个变量名为 SRC 的 makefile,它是我的源文件列表,扩展名为 *.cpp。我使用以下指令将此列表转换为目标文件列表(扩展名 *.o):
OBJ = $(SRC:%.cpp=%.o)
现在我想扩展我的 makefile,使我的源文件列表包含 *.cpp 和 *.cu 文件。我希望目标文件列表包含我所有扩展名为 *.o 的文件名。为此,我有一个包含 *.cpp 文件的 SRC 变量和一个包含 *.cu 文件的新 SRC_cu 变量,我执行以下操作:
OBJ = $(SRC:%.cpp=%.o)
OBJ += $(SRC_cu:%.cu=%.o)
这很好,但我想知道是否有一种方法可以用一条指令来做同样的事情,也就是说,只需使用一个带有混合扩展名的 SRC 变量并说“转换我的所有文件,扩展名为 x或 y,到 *.o 文件”。
【问题讨论】:
-
OBJ = $(SRC:%.cpp=%.o) $(SRC_cu:%.cu=%.o)? -
哪个
make?不同的make行为不同。 -
谢谢约翰,那行得通。但也许我不够具体。我有类似的东西: SRC = a.cpp SRC += b.cpp SRC_cu = d.cu 我想要一个包含所有 3 个文件的 SRC: SRC = a.cpp SRC += b.cpp SRC += d.cu