在使用Makefile编译时排除源文件

是否可以在编译过程中使用通配符函数在Makefile中排除源文件?

就像有几个源文件一样,

src/foo.cpp src/bar.cpp src/... 

然后在我的makefile中,

 SRC_FILES = $(wildcard src/*.cpp) 

但是我想排除bar.cpp。 这可能吗?

如果你使用的是GNU Make,你可以使用filter-out

 SRC_FILES := $(wildcard src/*.cpp) SRC_FILES := $(filter-out src/bar.cpp, $(SRC_FILES)) 

或者作为一条线:

 SRC_FILES = $(filter-out src/bar.cpp, $(wildcard src/*.cpp)) 

用它找:)

 SRC_FILES := $(shell find src/ ! -name "bar.cpp" -name "*.cpp") 

你可以使用Makefile子function:

  EXCLUDE=$(subst src/bar.cpp,,${SRC_FILES}) 

Unix glob模式src / [!b] *。cpp不包括所有以b开头的src文件。

然而,如果bar.cpp是唯一以b开头的src文件,或者如果您愿意将其重命名为以独特字符开头,那么这只会起作用。