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?
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))
utilisez find pour cela :)
SRC_FILES := $(Shell find src/ ! -name "bar.cpp" -name "*.cpp")
Vous pouvez utiliser la fonction Sub Makefile:
EXCLUDE=$(subst src/bar.cpp,,${SRC_FILES})
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.