Исключить исходный файл в компиляции с помощью Makefile
Можно ли исключить исходный файл в процессе компиляции с помощью подстановочной функции в Makefile?
Как и несколько исходных файлов,
src/foo.cpp
src/bar.cpp
src/...
Тогда в моем файле makefile у меня есть
SRC_FILES = $(wildcard src/*.cpp)
Но я хочу исключить bar.cpp. Возможно ли это?
Ответы
Ответ 1
Если вы используете GNU Make, вы можете использовать filter-out
:
SRC_FILES := $(wildcard src/*.cpp)
SRC_FILES := $(filter-out src/bar.cpp, $(SRC_FILES))
Или как одна строка:
SRC_FILES = $(filter-out src/bar.cpp, $(wildcard src/*.cpp))
Ответ 2
используйте для этого поиск:)
SRC_FILES := $(shell find src/ ! -name "bar.cpp" -name "*.cpp")
Ответ 3
Вы можете использовать функцию подстановки Makefile:
EXCLUDE=$(subst src/bar.cpp,,${SRC_FILES})
Ответ 4
Unix glob pattern src/[! b] *. cpp исключает все файлы src, начинающиеся с b.
Это будет работать, однако, если bar.cpp является единственным src файлом, начинающимся с b, или если вы хотите переименовать его, чтобы начать с уникального символа.