nmake. Day three

听说上帝在make世界的过程中,他在星期天休息……我也只能在星期天休息……(谁知道上帝制造世界用了makefile没有?)

与昨天比较,看看多了什么东东
在以下的makefile中 "//"作为注释,不过在一个makefile中 是不能通过 "//" 来标记注释的。

#for build & debug XRDP program
#2005 08 04
#create by ZAP @kouton
#out file ./debug/xrdp.exe


CP     = copy # xcopy /r /i
MAKE = nmake
DEL     = del /q/f


EXE = ./debug/xrdp.exe

CPP = cl.exe
LINK32 = link.exe
#LINK32_FLAGS=/nologo /subsystem:console /incremental:no /out:"$(EXE)"  //subsystem:console 说明这是一个console程序
LINK32_FLAGS= /nologo /DEBUG /DEBUGTYPE:CV /subsystem:console /incremental:no /out:"$(EXE)" /pdb:"./debug/xrdp.pdb" //最后这里说明了 pdb 文件输出的位置 没有这个,visual studio就不能调试我们的程序了(比如 breakpoint)

CPP_PROJ = -nologo -MD -GX -Zi -Zp1 -GR -Fd -DWIN32 -DDEBUG -D_CONSOLE /Fr
#CPP_PROJ=/nologo /EHsc /MDd /W3 /G5 /Zi /Od -D_DEBUG -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS $(INCLUDE_DIRS) /FD /c

HEADERS = rdp.h /
constant.h /
types.h

OBJS = xrdp.obj /
 rdp.obj

all : $(OBJS) //用过linux的朋友应该有点点映象 make all 就是执行这一段的内容 all: 就像c语言里面goto用的标号
 $(LINK32) $(LINK32_FLAGS) $(OBJS)

.PHONY : clean rebuild all  //这个告诉 nmake.exe clean rebuild all 这三个东西是三个“段” 避免和文件名冲突

clean : //当make clean的时候就执行这里的命令 删掉这些东西 用shell的del命令
 -$(DEL) $(EXE) $(OBJS) *.idb *.pdb ./debug/*.pdb
 
.cpp.obj::
   $(CPP) @<<
   $(CPP_PROJ) $<
<<

rebuild: clean all  //当make rebuild的时候 就先make clean 然后make all

//直接make的话 nmake 会找到最先出现的部分 也就是make all啦 我们就不用每次都打 nmake all  只要nmake 就可以编译了

你可能感兴趣的:(nmake. Day three)