作为makefile规则的先决条件,如何创建一个规则来标识包含目录上所有扩展名为.c的文件?

作为makefile规则的先决条件,如何创建一个规则来标识包含目录上所有扩展名为.c的文件?,makefile,Makefile,如果我有规则,其中OBJECTS_C是一个没有路径的对象文件列表: $(OBJECTS_C): %.o: %.c do stuff 如何指定%.c文件应该与同一个文件干匹配,但路径可以是任何东西 假设我有source/file1.c和source/dir1/file2.c 我想修改规则,以便在当前目录上创建file1.o和file2.o,而不管源文件在包含的目录中的位置如何 您可以使用VPATH(作为变量或使用VPATH指令)将所有相关目录添加到搜索先决条件的目录列表中 (VPAT

如果我有规则,其中OBJECTS_C是一个没有路径的对象文件列表:

$(OBJECTS_C): %.o:  %.c
     do stuff
如何指定%.c文件应该与同一个文件干匹配,但路径可以是任何东西

假设我有source/file1.c和source/dir1/file2.c 我想修改规则,以便在当前目录上创建file1.o和file2.o,而不管源文件在包含的目录中的位置如何

您可以使用VPATH(作为变量或使用
VPATH
指令)将所有相关目录添加到搜索先决条件的目录列表中

(VPATH适用于所有先决条件,VPATH仅适用于与给定模式匹配的先决条件)

是相关的文件

也就是说,要注意名称冲突:如果您有同名但位于不同目录中的src文件,您可能会遇到麻烦。更好的方法是让构建树反映源代码树