在使用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文件,或者如果您愿意将其重命名为以独特字符开头,那么这只会起作用。