82

Makefile でワイルドカード関数を使用して、コンパイル プロセスでソース ファイルを除外することは可能ですか?

いくつかのソースファイルがあるように、

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

それから私のメイクファイルには、

SRC_FILES = $(wildcard src/*.cpp)

しかし、bar.cpp を除外したいと思います。これは可能ですか?

4

4 に答える 4

151

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))
于 2012-04-23T12:52:55.357 に答える
17

それにはfindを使用してください:)

SRC_FILES := $(shell find src/ ! -name "bar.cpp" -name "*.cpp")
于 2012-04-23T07:16:07.047 に答える
7

Makefile subst 関数を使用できます:

 EXCLUDE=$(subst src/bar.cpp,,${SRC_FILES})
于 2012-04-23T07:12:25.363 に答える
4

Unix globパターン src/[!b]*.cpp は、b で始まるすべての src ファイルを除外します。

ただし、これは、bar.cpp が b で始まる唯一の src ファイルである場合、または名前を変更して一意の文字で始まる場合にのみ機能します。

于 2015-09-26T18:24:43.303 に答える