web-dev-qa-db-ja.com

Makefileを使用したコンパイルでソースファイルを除外する

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

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

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

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

SRC_FILES = $(wildcard src/*.cpp)

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

53
domlao

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))
100
Beta

findを使用してください:)

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

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

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

nix glob pattern src/[!b] *。cppは、bで始まるすべてのsrcファイルを除外します。

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

1
ma11hew28