Подтвердить что ты не робот

Исключить исходный файл в компиляции с помощью Makefile

Можно ли исключить исходный файл в процессе компиляции с помощью подстановочной функции в Makefile?

Как и несколько исходных файлов,

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

Тогда в моем файле makefile у меня есть

SRC_FILES = $(wildcard src/*.cpp)

Но я хочу исключить bar.cpp. Возможно ли это?

4b9b3361

Ответ 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, или если вы хотите переименовать его, чтобы начать с уникального символа.