web-dev-qa-db-fra.com

Exclure le fichier source de la compilation à l'aide de Makefile

Est-il possible d'exclure un fichier source dans le processus de compilation en utilisant la fonction générique dans un Makefile?

Comme avoir plusieurs fichiers source,

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

Ensuite, dans mon makefile, j'ai

SRC_FILES = $(wildcard src/*.cpp)

Mais je veux exclure le bar.cpp. Est-ce possible?

53
domlao

Si vous utilisez GNU Make, vous pouvez utiliser filter-out :

SRC_FILES := $(wildcard src/*.cpp)
SRC_FILES := $(filter-out src/bar.cpp, $(SRC_FILES))

Ou en une seule ligne:

SRC_FILES = $(filter-out src/bar.cpp, $(wildcard src/*.cpp))
100
Beta

utilisez find pour cela :)

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

Vous pouvez utiliser la fonction Sub Makefile:

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

Le modèle nix glob src/[! B] *. Cpp exclut tous les fichiers src commençant par b.

Cela ne fonctionnerait cependant que si bar.cpp est le seul fichier src commençant par b ou si vous êtes prêt à le renommer pour commencer par un caractère unique.

1
ma11hew28