Файл makefile - это скрипт, которым управляет Make. Это всего лишь текстовый файл, написанный со строгой грамматикой, которая делает потребности, такие как исходный код (хотя он интерпретируется, а не компилируется). Вы можете использовать любой текстовый редактор, который вам нравится создавать.
Вы используете C (судя по суффиксам на ваших именах файлов). Таким образом, чтобы создать labM.o
из labM.c
вы, вероятно, использовать команду как
gcc -c labM.c -o labM.o
(Не то, -o labM.o
действительно необходимо, это поведение по умолчанию, я просто пытаюсь по буквам вещи немного.) Точно так же к строить labG.o
вы будете использовать
gcc -c labG.c -o labG.o
, а затем (я думаю) вы бы связать их вместе, чтобы построить лабораторию:
gcc labM.o labG.o -o lab
А иногда вы хотите, чтобы очистить построенные файлы:
rm -f *.o lab
Так, чтобы сделать все это, вы бы написали Makefile называется Makefile
, который выглядел так (обратите внимание, что ведущие пространства ТКС):
labM.o:
gcc -c labM.c -o labM.o
labG.o:
gcc -c labG.c -o labG.o
lab:
gcc labM.o labG.o -o lab
.PHONY:clean
clean:
rm -f *.o lab
Тогда вы могли бы make lab
или make clean
или make labM.o labG.o
. Если вы действительно хотите назвать этот makefile labMakefile
, вы можете сделать это, но тогда вам придется сделать это, например. make -f labMakefile lab
. Этот make-файл является сырым, но эффективным. Это может быть значительно улучшена:
CC = gcc
lab: labM.o labG.o
gcc $^ -o [email protected]
lab%.o: lab%.c
$(CC) -c $< -o [email protected]
.PHONY:clean
clean:
@echo cleaning things up, boss...
@rm -f *.o lab
Это будет обрабатывать зависимости лучше: если вы измените labM.c
но не labG.c
, а затем make
, сделать будет знать, что labM.o
(и lab
) должен быть восстановлен, но labG.o
не нужно быть.
Это много, чтобы принять участие, и возможно дальнейшее улучшение (обработка зависимостей может быть сделана очень slick), но это хорошее начало.
Я сомневаюсь, что это сообщение об ошибке, потому что это другая заглавная буква. Если, конечно, нет ... –
Я думаю, что 'make -f labMakeFile lab' – JA3N
Ну, ваш make-файл называется' labMakefile' (по-видимому), а не 'labMakeFile', поэтому есть одна проблема. Вторая проблема заключается в том, что вы просите его создать целевую «лабораторию», но ваш make-файл не имеет никакой цели, называемой 'lab'. –