读书人

Windows平台上Makefile学习笔记(二)

发布时间: 2012-12-25 16:18:28 作者: rapoo

Windows平台下Makefile学习笔记(二)

作者:朱金灿

来源:http://blog.csdn.net/clever101

上次我们学习了怎么用Makefile编译一个控制台工程。这次我们学习一下如何使用Makefile来编译一个win 32的GUI程序。win 32的GUI程序其编译过程大部分和控制台程序一样,不同的是多了一步RC编译器将资源文件编译成res文件,然后在最后一步链接中需要把这个res文件链接到exe文件中。

好,现在让我们在实践中学习吧。新建一个win32 应用程序工程——Win32Test。让我们先完成C++代码部分的Makefile的编写,还记得Makefile的原则是以终为始吗?忘记了就翻翻上一篇:Windows平台下Makefile学习笔记(一)。具体代码如下:


#设置编译标记,初始化为FALSECFGSET     =  FALSE#定义debug版本的预处理器CCDEBUG    = -DWIN32 -D_DEBUG -D_WINDOWS#定义release版本的预处理器CCNODBG    = -DWIN32 -D_NDEBUG -D_WINDOWS!IFDEF debugCC         = $(CCDEBUG)OUTDIR = .\DebugCFGSET     =  TRUE!ELSE IFDEF releaseCC         = $(CCNODBG)OUTDIR = .\ReleaseCFGSET     =  TRUE!ENDIF# 提示用法#!IF "$(CFGSET)"== "FALSE"!MESSAGE Usage: nmake /f Makefile.vc [<config>] [<target>]      !MESSAGE!MESSAGE where <config> is one of:!MESSAGE -  release=1               - build release version!MESSAGE -  debug=1                 - build debug version!MESSAGE!MESSAGE <target> may be:!MESSAGE -  clean                 - clear output file!MESSAGE!MESSAGE!ERROR please choose a valid configuration instead"!ENDIF#这里增加了一个输出:$(OUTDIR)all: $(OUTDIR) $(OUTDIR)\DlgTest.exe#假如不存在$(OUTDIR)文件夹,就创建它$(OUTDIR) : if not exist "$(OUTDIR)" mkdir $(OUTDIR) clean:       if exist $(OUTDIR) del $(OUTDIR)\*.ilk       if exist $(OUTDIR) del $(OUTDIR)\*.obj       if exist $(OUTDIR) del $(OUTDIR)\*.exe            if exist $(OUTDIR) del $(OUTDIR)\*.res       # compile$(OUTDIR)\stdafx.obj: stdafx.cpp    cl -c  $(CC) -Istdafx.h /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" stdafx.cpp    $(OUTDIR)\DlgTest.obj: DlgTest.cpp $(OUTDIR)\stdafx.obj    cl -c  $(CC) -Istdafx.h /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" DlgTest.cpp$(OUTDIR)\DlgTestDlg.obj: DlgTestDlg.cpp $(OUTDIR)\stdafx.obj    cl -c  $(CC) -Istdafx.h /Fo"$(OUTDIR)\\" /Fd"$(OUTDIR)\\" DlgTestDlg.cpp# compile resource script    rc.exe /n /v /fo $(OUTDIR)\DlgTest.res DlgTest.rc# link$(OUTDIR)\DlgTest.exe: $(OUTDIR)\DlgTest.obj $(OUTDIR)\DlgTestDlg.obj    link /machine:x86 /INCREMENTAL:YES /NOLOGO /subsystem:WINDOWS /out:$(OUTDIR)\DlgTest.exe $(OUTDIR)\DlgTest.obj $(OUTDIR)\DlgTestDlg.obj $(OUTDIR)\DlgTest.res kernel32.lib user32.lib

和Win32应用程序的Makefile比较可以知道,MFC程序的Makefile和Win 32GUI程序的步骤和过程基本一致。

Windows平台下Makefile学习就此告一段落了,你学会了吗?

参考文献:


1. 精通Windows API,范文庆、周彬彬、安靖编著

如果你觉得我的博客对你有帮助,请在下面网址中博客之星评选活动中投我一票:

http://vote.blog.csdn.net/item/blogstar/clever101(单击候选人介绍下面的投他一票那个按钮)

参与投票有机会获奖:

最佳贡献奖:通过微博分享活动就有机会获得30元充值卡一张(每周抽选5名)
幸运奖:凡参与投票用户就有机会获得精美小礼品一份。(每周抽选5名)
积极参与奖:所有参与投票并符合条件的用户均可获得20个下载积分。


读书人网 >windows

热点推荐