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 就可以編譯了

發佈了33 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章