Как уже указывалось, ваш синтаксис неверен. Но кроме этого ваша функция оболочки никогда даже не выполняется .
Почему бы и нет? Потому что в вашем make-файле вы определяете переменную, которая содержит вызов переменной оболочки, но тогда вы никогда не используете переменную где-либо. Поскольку вы не используете его, переменная никогда не раскрывается. Поскольку переменная никогда не раскрывается, функция в ней никогда не вызывается.
Если вы хотите, чтобы переменная была расширена, вам нужно либо сделать ее простой переменной (используя :=
), чтобы правая часть раскрывалась при назначении переменной, либо использовать функцию в контекст, в котором он раскрывается немедленно; у другого ответа есть пример использования этого (вне любого назначения переменной)
Вот пример использования простой переменной:
HelloWorld: HelloWorld.c
gcc -o HelloWorld HelloWorld.c
FILES := $(shell touch file1.txt)
(обратите внимание, вам не нужны кавычки при установке переменных make-файла, в отличие от переменных оболочки).
Что касается руководства, оно написано как руководство пользователя: то есть вы должны читать его, начиная с самого начала, а не как справочное руководство, в котором вы перепрыгиваете. В частности, вы нигде не добьетесь написания make-файлов, пока не прочитаете внимательно и полностью не поймете первые две главы «Введение в Make-файлы» и «Написание Make-файлов». Для свободного владения языком вам необходимо разобраться в разделе Как make читает Makefile .