Makefile でワイルドカード関数を使用して、コンパイル プロセスでソース ファイルを除外することは可能ですか?
いくつかのソースファイルがあるように、
src/foo.cpp
src/bar.cpp
src/...
それから私のメイクファイルには、
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))
または1行として:
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 ファイルである場合、または名前を変更して一意の文字で始まる場合にのみ機能します。