今天完成了适应vs目录结构的makefile
头文件包含以来用cl 参数 showInclude得到,使用perl整理,达到头文件依赖自动检测。
########################################################
#适应vs目录结构的makefile --zeeeitch 2006-07-08
#需要安装mingw make 和active perl
########################################################
########################################################
#此处设置
########################################################
Configuration = Release
PROJECT = $(Configuration)/CustomSpider.exe
########################################################
#此处设置文件列表
########################################################
FILES=customspider spider globals htmlgetter stdafx
########################################################
#此处设置
########################################################
includeArg=/I "f:/ZH/source/open_source/tinyxml//" /I "d:/boost1.33/include/boost-1_33" /
/I "f:/ZH/source/open_source/log4cpp-0.3.5rc3/include//" /I "f:/ZH/source/open_source/cppunit-1.10.2/include"
libArg= /LIBPATH:"d:/boost1.33/lib" /
wininet.lib "f:/ZH/source/open_source/log4cpp-0.3.5rc3/msvc6/log4cpp/$(Configuration)/log4cpp.lib" /
"/Zh/source/open_source/tinyxml/$(Configuration)/tinyxml.lib"
CXXFLAGS = /O2 $(includeArg) /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_AFXDLL" /D "_MBCS" /EHsc /Fo"$(Configuration)/" /c /MD
LDFLAGS= /OUT:"$(PROJECT)" $(libArg) /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /MACHINE:X86
########################################################
########################################################
########################################################
#以下是不变信息
########################################################
#空置扩展名,取消所有隐晦规则
.SUFFIXES:
SRCDIR=.
#依赖文件目录
DEPDIR=makefile/dep
OBJECTS=$(patsubst %,$(Configuration)/%.obj,$(FILES))
SOURCES=$(patsubst %,$(SRCDIR)/%.cpp,$(FILES))
#依赖文件.d
DEPS=$(patsubst %,$(DEPDIR)/%.d,$(FILES))
CXX=CL
$(PROJECT):$(OBJECTS)
link $(OBJECTS) $(LDFLAGS)
$(Configuration)/%.obj : $(SRCDIR)/%.cpp
#生成obj
$(CXX) $< $(CXXFLAGS)
#建立存放.d文件的文件夹
-mkdir $(DEPDIR)
#通过编译器生成文件包含列表
$(CXX) $< $(CXXFLAGS) /showIncludes /E 2> $(DEPDIR)/$(subst .cpp,.d1,$<) 1>NUL
#根据文件包含列表生成依赖文件.d,使用perl 正则
perl makefile/gen_d.pl $(subst .cpp,,$<) $(Configuration)
-del $(DEPDIR)/$(subst .cpp,.d1,$<)
# -del $(DEPDIR)/temp.txt
.PHONY clean:
-del $(Configuration)/*.obj
-del $(DEPDIR)/*.d
-del $(PROJECT)
#使用.d
-include $(DEPS)