В моем проекте все .cpp файлы хранятся вMakefile - заменить в групповой символ
Classes/
Classes/Something/
Classes/Something/Else
...
Я хочу, чтобы собрать все файлы .cpp separetly Бин/каталог, заменив/с _, так что:
Classes/First.cpp -> Bin/Classes_First.o
Classes/Foo/Bar.cpp -> Bin/Classes_Foo_Bar.o
Теперь я хотел создать правила для компиляции:
Bin/%.o: $(subst _,/,%.cpp)
$(COMPILER)g++ $(COMPILE_FLAGS) -c -o [email protected] $^
Я пробовал:
make Bin/Classes_Test.o
Но компиляция не удалась.
Так что я создал отладку шаблона:
%.cpp:
@echo CPP: [email protected]
Теперь распечатанный:
CPP: Classes_Test.cpp
Почему ?!
Так что я изменил мой рисунок на:
Bin/%.o: $(subst _,/,Test1_Test2.cpp)
и я увидел:
CPP: Test1/Test2.cpp
Я немного смущен, почему Подст не работает, если я использую подстановочные в качестве источника ...