Я пытаюсь отправить команды «sub-make» в подкаталог. У меня есть родительский каталог с Makefile "top_level" и дочерний каталог с собственным Makefile.
Мой родительский Makefile имеет следующую строку:
target%:
make -C sub_dir $(patsubst target-%,%,$@)
Я могу сделать в родительской папке:
make target-clean && make target-all
Это будет интерпретироваться как:
make -C sub_dir clean && make -C sub_dir all
Я хочу быть в состоянии сделать:
сделать цель
но в этом случае я получаю:
make -C sub_dir target.o
Я ожидал, что хотя patsubst не найдет шаблон, он ничего не вернет или проверенное выражение. Но он возвращает это "target.o".
Может кто-нибудь объяснить это мне? Как мне ничего не получить?
Я попробовал эти выражения безуспешно:
make -C sub_dir $(patsubst target%,%,$@)
make -C sub_dir $(patsubst -%,%,$(patsubst target%,%,$@))
make -C sub_dir $($(patsubst -%,%,$(patsubst target%,%,$@)):.o=)
Последний хитрый, он дает:
make -C sub_dir
make [1]: вход в каталог / home / aurelien / документы / проекты / parent / sub_dir '
make [1]: 'subtarget' обновлено.
make [1]: выход из каталога '/ home / aurelien / документы / проекты / parent / sub_dir'
cc target.o -o target
cc: target.o: такого файла или каталога нет
Копия: нет входных файлов
make: *** [target] Ошибка 1