私はこれらのファイルを持っていますmain.c
、fun.c
、およびfun.h
です。私はmakefile
スクリプトを使用して、従来のコンパイル方法の代わりに実行したい。次のmakefileスクリプトを投稿した人は、このスクリプトが自動的に同じディレクトリにファイル名をキャプチャするので、プロジェクトディレクトリに移動して$ make
という端末に書き込むだけでよいことになります。しかし、私はこのエラーを取得するMakefileスクリプトが正しく実行されない
TARGET = prog
LIBS = -lm
CC = gcc
CFLAGS = -g -Wall
.PHONY: default all clean
default: $(TARGET)
all: default
OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)
%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o [email protected]
.PRECIOUS: $(TARGET) $(OBJECTS)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -Wall $(LIBS) -o [email protected]
clean:
-rm -f *.o
-rm -f $(TARGET)
: make: *** No rule to make target
デフォルトの」私は、ファイルmakefile
を作成し、次のスクリプトを置きます。 Stop.`
私は$make -v
を試してみましたが、得た:
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-apple-darwin11.3.0
は、私は彼を誤解だと思います!親切に、ここには何が欠けていますか?ありがとうございました
メイクファイルは** **スクリプトではありません。**私はそれらを使用することを考えています**伝統的ですが( '* .c'という名前のものをコンパイルするあなたのアプローチは間違いなく伝統的ではありません...) –
あなたの 'default'ターゲットbtwは、このMakefile内では全く目的を果たしません。最初のルールとして 'all:$(TARGET)'を書くのはなぜですか? –
Makefileでは、それらの空白(4つの空白が順番に並んでいます)がタブ付きでなければならないことを覚えています( '\ t')。 – Amadeus