У меня есть вопрос по GNU make с функцией вторичного расширения.
Вот структура моего проекта (только для примера)
.
├── build
├── Makefile
└── src
└── a.c
А вот мой Makefile с включенным вторичным расширением
.SECONDEXPANSION:
%.o: $$(subst build,src,%.c)
@echo $^
Я печатаю make build/a.o
, GNU make жалуется:
make: *** No rule to make target `build/a.o'. Stop.
Похоже, что make не находит предпосылок, поэтому она перестает делать.
Для дальнейшей отладки ядобавьте a.c
в каталог build
и введите make build/a.o
, GNU сделает вывод эти
build/a.c
Вывод странный, так как я ожидаю, что вывод будет src/a.c
вместо build/a.c
Кажется, что встроенная текстовая функция subst
не работает со вторичным расширением.
Кто-то знает, что не так с моим Makefile?
Спасибо