Сообщение" ничего не нужно делать для makefile"
у меня есть следующие файлы:
ребенок.c, Cookie.c, Cookie.h, CookieMonster.c, Jar.c, Jar.ч, молоко.с , Молоко.h
и следующий makefile, названный makePractice, который должен создать два исполняемых файла, Child и CookieMonster.
makefile:
CC = gcc # the compiler
CFLAGS = -Wall # the compiler flags
ChildObjects = Jar.o # object files for the Child executable
CookieMonsterObjects = Jar.o Milk.o #object files for the CookieMonster executable
all: Child CookieMonster # the first target. Both executables are created when
# 'make' is invoked with no target
# general rule for compiling a source and producing an object file
.c.o:
$(CC) $(CFLAGS) -c $<
# linking rule for the Child executable
Child: $(ChildObjects)
$(CC) $(CFLAGS) $(ChildObjects) -o Child
# linking rule for the CookieMonster executable
CookieMonster: $(CookieMonsterObjects)
$(CC) $(CFLAGS) $(CookieMonsterObjects) -o CookieMonster
# dependance rules for the .o files
Child.o: Child.c Cookie.h Jar.h
CookieMonster.o: CookieMonster.c Cookie.h Jar.h Milk.h
Jar.o: Jar.c Jar.h Cookie.h
Milk.o: Milk.c Milk.h
Cookie.o: Cookie.c Cookie.h
# gives the option to delete all the executable, .o and temporary files
clean:
rm -f *.o *~
когда я пытаюсь использовать makefile для создания исполняемых файлов, запустив следующую строку в оболочке
make -f makePractice
Я получаю следующее сообщение:
make: Nothing to be done for `makefile'.
Я не пойми, что не так...
2 ответов
Если вы не укажете цель в командной строке, Make использует первую цель, определенную в makefile по умолчанию. В вашем случае это makefile:
. Но это ничего не меняет. Так что просто удалите makefile:
.
командная строка не сказать make
Что вы хотите сделать, поэтому по умолчанию он пытается сделать первый явно именованный целевой объект в makefile. Это случилось makefile
в самой первой строке.
makefile:
поскольку нет зависимостей, нет причин делать что-либо, чтобы переделать этот файл. Поэтому make
выходит, счастлив, что выполнил ваше желание.