Сообщение "ничего не сделать для makefile" - PullRequest
13 голосов
/ 14 августа 2011

У меня есть следующие файлы:

Child.c, Cookie.c, Cookie.h, CookieMonster.c, Jar.c, Jar.h, Milk.c, Milk.h

и следующий make-файл с именем 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 *~

Когда я пытаюсь использовать make-файл для создания исполняемых файлов, запустив следующую строку вshell

make -f makePractice

Я получаю следующее сообщение:

make: Nothing to be done for `makefile'.

Я не понимаю, что не так ...

Ответы [ 2 ]

15 голосов
/ 14 августа 2011

Если вы не укажете цель в командной строке, Make использует первую цель, определенную в make-файле по умолчанию.В вашем случае это makefile:.Но это ничего не делает.Так что просто удалите makefile:.

5 голосов
/ 14 августа 2011

Ваша командная строка не сообщает make, что вы хотите сделать, поэтому по умолчанию она пытается создать первую явно названную цель в make-файле. Это бывает makefile, в самой первой строке.

Makefile:

Поскольку нет никаких зависимостей, нет причин делать что-либо, чтобы переделать этот файл. Поэтому make выходит, довольный тем, что повиновался вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...