1. ホーム
  2. c

[解決済み] "Nothing to be done for makefile" のメッセージ

2022-01-31 08:39:54

質問

以下のファイルがあります。

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

という名前の次のmakefileを作成します。 makePractice これは、2つの実行ファイルを作成することになっています。 ChildCookieMonster .

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'.

何が悪いのか理解できない...。

どうすればいいですか?

コマンドラインでターゲットを指定しない場合、Make はデフォルトで makefile で定義された最初のターゲットを使用します。 あなたの場合、それは makefile: . でも、これでは何もできない。 そこで makefile: .