88 votes

Exclure un fichier source de la compilation en utilisant Makefile

Est-il possible d'exclure un fichier source du processus de compilation en utilisant la fonction wildcard dans un Makefile ?

Comme plusieurs fichiers sources,

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

Ensuite, dans mon fichier makefile, j'ai,

SRC_FILES = $(wildcard src/*.cpp)

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

164voto

Beta Points 37745

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

18voto

K1773R Points 916

Utiliser find pour cela :)

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

7voto

Dmitri Chubarov Points 4518

Vous pouvez utiliser la fonction Makefile subst :

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

4voto

MattDiPasquale Points 23842

En Globule Unix Le motif 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 qui commence par b ou si vous êtes prêt à le renommer pour qu'il commence par un caractère unique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X