一个makefile文件请帮忙解释一上含义

一个makefile文件请帮忙解释一下含义
CXXFLAGS = -O2 -g -Wall -fmessage-length=0

OBJS = A.o

LIBS =

TARGET = A.exe

$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(LIBS) //这句中的$(CXX)什么意思(eclipse的CDT自动生成的makefile)

all: $(TARGET)

clean:
rm -f $(OBJS) $(TARGET)



------解决方案--------------------
CXXFLAGS = -O2 -g -Wall -fmessage-length=0
这样的语句相当于变量定义,像linux的shell或dos的bat的变量定义

$(xxx)就是xxx变量的值,像shell的${xxx}或bat的%xxx%

$(TARGET): $(OBJS)
:表示依赖,即要完成$(TARGET),就先要完成$(OBJS)
通过上面的变量定义知道$(TARGET)就是A.exe,$(OBJS)就是A.o
即要生成A.exe,就先要生成A.o

$(CXX) -o $(TARGET) $(OBJS) $(LIBS) //这句中的$(CXX)什么意思(eclipse的CDT自动生成的makefile)
$(CXX)就是CXX变量的值,要么是自己定义CXX=xxx路径\编译器的执行文件,要么是系统自定义的值

all: $(TARGET)
all这样的字符表示伪目标
整个语句表示要完成all,就要完成$(TARGET)
这是缺省的任务,因为makefile可以接参数,不带参数的情况下,就自动以第一个伪目标为任务目标

clean:
rm -f $(OBJS) $(TARGET)
这个是clean伪目标,在makefile命令后接clean参数,可以指定makefile执行clean目标
和ant命令相似,通过参数可以执行build.xml的不同目标
该目标在这里就是调用 rm -f $(OBJS) $(TARGET)命令,rm一般是删除命令,即删除A.o和A.exe