根据教程写的一个很简单的makefile,有了一些基本功能,
TARGETS = main
SOURCES := $(wildcard *.cpp)
OBJECTS := $(patsubst %.cpp, %.o, $(SOURCES))
DEPENDS := $(patsubst %.o, %.d, $(OBJECTS))
MISSING_DEPENDS := $(filter-out $(wildcard $(DEPENDS)), $(DEPENDS))
MISSING_DEPENDS_SOURCES := $(wildcard $(patsubst %.d, %.cpp, $(MISSING_DEPENDS)))
CC = g++
CFLAGS = -Wall -g -MD
CMACROS = -D__BSD_SOCKET__
$(TARGETS): $(OBJECTS)
$(CC) $^ -o $@
$(OBJECTS): %.o : %.cpp
$(CC) -c $(CFLAGS) $(CMACROS) $< -o $@
.PHONY: veryclean clean all rebuild show
veryclean: clean
-rm -fr $(TARGETS)
clean:
-rm -fr *.o *.d
all: $(TARGETS)
rebuild: veryclean all
show:
echo $(TARGETS)
echo $(SOURCES)
echo $(OBJECTS)
echo $(DEPENDS)
echo $(MISSING_DEPENDS)
echo $(MISSING_DEPENDS_SOURCES)
给几个好的学习链接如下:
最最权威的:http://www.gnu.org/software/make/manual/make.html
上面那条的中文版:http://lsec.cc.ac.cn/~peace/articles/gnumaketranslated.html
另一个不错的中文版:http://www.stlchina.org/twiki/bin/view.pl/ScriptProgram/LearnMakefile#2_1_Makefile