Exclure le fichier source dans la compilation à l’aide de Makefile

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

Comme avoir plusieurs fichiers sources,

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

Alors dans mon makefile j’ai,

 SRC_FILES = $(wildcard src/*.cpp) 

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

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

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

Ou comme une ligne:

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

utiliser pour trouver 🙂

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

Vous pouvez utiliser la fonction Makefile subst:

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

Le gabarit Unix src / [! B] *. Cpp exclut tous les fichiers src commençant par b.

Cela ne fonctionnerait que si bar.cpp est le seul fichier src qui commence par b ou si vous souhaitez le renommer pour commencer avec un caractère unique.