是否可以在 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))
使用 find :)
SRC_FILES := $(shell find src/ ! -name "bar.cpp" -name "*.cpp")
您可以使用 Makefile subst 功能:
EXCLUDE=$(subst src/bar.cpp,,${SRC_FILES})
Unix glob模式 src/[!b]*.cpp 排除了所有以 b 开头的src 文件。
但是,只有当 bar.cpp 是唯一以 b 开头的 src 文件,或者您愿意将其重命名为以唯一字符开头时,这才有效。