У проекта фактически есть множество различных каталогов, в которых расположены исходные файлы, поэтому я немного упрощаю.
Переменная SOURCES содержит:
src/main.cpp src/test.cpp
целевое правило $ (BUILD_PATH)% .o расширяется до:
linux_build/test.o
, поэтому я пытаюсь создать правило, которое берет цель, смотрит на часть "nodir" и пытается сопоставить ее с соответствующей записью из списка SOURCES.Затем он использует это в качестве необходимого условия:
$(BUILD_PATH)%.o: $(strip $(foreach path, $(SOURCES), $(if $(findstring %.cpp,$(path)), $(path),)))
$(CL) $(CL_FLAGS) $(INC) $< -o $@
, что, похоже, не работает, это% в "% .cpp".Что я здесь не так делаю?