0
CXX=clang++ $(CXXFLAGS)
CXXFLAGS=-O2
OFILES=a.o b.o c.o

.SUFFIXES: .o .cpp

main: $(OFILES)
    $(CXX) $(OFILES)

clean: rm -f *.o *~ 

a.o: a.cpp a.h
b.o: b.cpp b.h
c.o: c.cpp

.o ファイルは削除されません。@echo を rm の前に付けようとすると、それも起こらないようです。何か案は?

4

2 に答える 2

2

現在のように、cleanターゲットは「ファイル」、、およびに依存します。したがって、これらの「ファイル」が変更された場合にのみ実行されます。rm-f*.o*~

この線

clean: rm -f *.o *~ 

2行になるはずです

clean:
    rm -f *.o *~ 

一般的な makefile の書き方は次のようなものです:

# Variables
VARIABLE1=value1
VARIABLE2=value2
# etc...

# Targets
# The first target is the "default" target when `make` is invoked
# without any specific target
default: some_other_target

# Other targets...

あなたの場合、「デフォルト」のターゲットが必要なclean場合は、上記のテンプレートを使用すると、ターゲットdefaultに依存します。clean

default: clean
于 2013-10-24T06:05:45.683 に答える