Я нашел решение.Оказывается, у make-файла было несколько проблем.
Во-первых, пример, который я разместил, на самом деле работает, как указал Бантар.Однако моя проблема заключалась в том, что мои исходные файлы были не в корневом каталоге, а в подкаталоге src /, который я добавил в vpath.Честно говоря, я думал, что это не имеет отношения к моему вопросу, так как я полагал, что make автоматически просканирует свой vpath на наличие исходных файлов.Оказывается, vpath не применяется к проверке правил.
Чтобы заставить его работать, выполните:
vpath = %.c src
vpath = %.C src
%o : src/%.[Cc]
gcc -c $<
Далее, когда я работал с примерами того, как это сделать, make иногда создавал исходные файлымоя спина.Если вы выполните:
all : main.o
gcc -o test main.o
... и не имеете правила для сборки файла .o, make создаст его, используя неявные встроенные правила.Весьма запутанно.Его можно отключить с помощью флага -r.
make -r all
Третья компиляция файлов .C с использованием gcc без каких-либо дополнительных параметров приведет к ошибкам компоновщика, поскольку gcc по умолчанию интерпретирует файлы .C как файлы C ++.Для компиляции в виде файлов C используйте флаг -x.
%.o : %.C
gcc -x c -c %<
Надеюсь, это кому-нибудь поможет.