wxWindows 程序编译选项设置统揽

来源:互联网 发布:mac 截图 粘贴 编辑:程序博客网 时间:2024/05/18 02:59

看看丝路花雨的[推荐] VC++预处理定义中的WINVER= 0x400, STRICT是干吗的
A tutorial for wxWindows 2  在这一页有ZIP和PDF教程文档下载

教程和资源:
http://www.bzzt.net/~wxwidgets/icpp_wx1.html

wyoGuide http://wyoguide.sourceforge.net/


http://sourceforge.net/projects/wxwindows
Jabber Clients Development Team  http://www.cllrnet.ca/~ahmed1980/wxwindows/wxwindows.htm
在这个站点上的一个比较好的简洁的安装教程(For VC)[推荐]: Compiling wxWindows applications in the VC++ IDE:

wxWindows 程序编译选项设置统揽

下面我会写的罗嗦一点,我之所以罗嗦,是因为我注定要成为大师级的人物~呵呵~
首先,得确保你的wxWindows 已经安装好了,并且把你的wxWindows编译出了相应的lib和dll文件.
然后,把你的wxWindows安装目录添加到环境变量中去,以便于VC查找头文件和链接库和以及dll.
比如你的安装目录是C:/Program Files/wxWindows242,就在环境变量中添加一个变量: WXWIN=C:/Program Files/wxWindows242 
在XP中是这样设置的:
我的电脑>>属性>>高级选项卡>>环境变量,然后在用户变量中新建一个变量,
变量名: WXWIN
变量值: C:/Program Files/wxWindows242

接着,在VC中包含头文件和库文件的路径
Tools>>Options>>Directories选项卡,
Show Directories for选Include files,然后在Directories一栏添加目录C:/Program Files/wxWindows242/include
Show Directories for选Library files,然后在Directories一栏添加目录C:/Program Files/wxWindows242/lib
--------------------
当然,你如果愿意在
Show Directories for选Source files,然后在Directories一栏添加目录C:/Program Files/wxWindows242/src
也是可以的.

接着,对于每一个新建的Project,按照你需要编译发行的版本来进行VC中的设置Project>>Settings.(或者按Alt+ F7)
注意,由于我们使用wxWindows,所以,不需要使用MFC,因此,下面的设置中,无论是你想发行哪个版本,在工程设置对话框中(Project Settings),General 选项卡中,都选择Not Using MFC.
如果你想使用wxWIndows和MFC混合编程,我在另外的文章中再详细叙述.
下面根据网上文章和wxWindows给的实际例子(以官方例子为准),以及我个人的编译实践,介绍一下需要添加的编译配置--这个说的是你做好了上面的说的设置环境变量(下面就要用的),包含头文件和库文件路径的事情,然后使用AppWizard在除了wxWindows安装目录的Samples目录之外的目录(比如E:/ Test 下)添加了一个Win32 Application,建立一个空的工程(Empty Project),添加了一个main.cpp(文件名随你自己定了)之后,进行的设置(Settings).
注:如果你在wxWindows安装目录下面的Samples目录下建立了一个工程,那么,你按照官方例子(Samples目录下的例子)进行设置就一定行的,我试过,Ctrl+C,Ctrl+V,OK.
编译版本目录
发行版本
Debug 
Debug Unicode  
Debug DLL
Debug Unicode DLL
   
Release 
Release Unicode
Release DLL  
Release Unicode DLL


编译调试Debug版(Win32 Debug)<<请认真阅读,这个写的也比较详细,其他的编译版本与这个很类似
General选项卡
默认吧^_^
C/C++选项卡
  1. 分类(Category)下拉框中选定General, 在PreProcessor difinitions 中添加: WIN32,_DEBUG,_WINDOWS,WINVER=0x400,_MT,wxUSE_GUI=1,__WXDEBUG__,WXDEBUG=1
  2. 分类下拉框中选定PreProcessor, 在Additional include directories 中添加:
    $(WXWIN)/lib/mswd
    注,因为你编译的是Debug版本,并且不使用DLL,而Debug版的必须包含debug版的setup.h,它位于$(WXWIN)/lib/ mswd  目录下的wx/setup.h,虽然在这个wx子目录下面,但是包含到mswd目录就可以了.
    $(WXWIN)是指前面在用户环境变量中注册的变量,在我这里是代表C:/Program Files/wxWindows242目录.使用它,主要是减少输入量,每次输入C:/Program Files/wxWindows242多累啊,这个在后面的配置中就不敷述了.
    注意:
    这个setup.h 在每种发行版本中都是不一样的(主要是里面有些配置开关不一样,当然具体是不是这样的,我没有看每一个setup.h),分别处于不同的目录,如下表

    发行版本
    Setup.h包含路径(其实在wx/下)
    Debug
    $(WXWIN)/lib/mswd  Debug Unicode$(WXWIN)/lib/mswudDebug DLL$(WXWIN)/lib/mswdlldDebug Unicode DLL
    $(WXWIN)/lib/mswdlludRelease
    $(WXWIN)/lib/mswRelease Unicode $(WXWIN)/lib/mswuRelease DLL$(WXWIN)/lib/mswdllRelease Unicode DLL$(WXWIN)/lib/mswdllu
  3. 分类下拉框中选定PreCompiled Headers, 选择Not using precompiled headers 或者 Automatic use of precompiled headers (推荐,毕竟VC的IDE支持预编译头文件).
    至于Use precompiled header file(.pch) ,through header: $(WXWIN)/include/wx/wx.h,我倒没有试过,大家可以自己试试,我自己用的是Automatic use of precompiled headers.
    另外,有的外国网站上说千万不要使用Create precompiled header file(.pch)这个选项,因为可能造成windows的崩溃(Crash),我试过那么一次,觉得好像没有那么严重.
  4. 分类下拉框中选定Code Generation , 在Use run-time library 中选择Debug Multithreaded DLL (调试版Debug用的,发行版Release用Multithreaded DLL,至于为什么要选 (Debug)Multithreaded DLL,是因为wxWindows 是使用Multithreaded DLL编译的)
Link选项卡
  1. 分类下拉框中选定General,Object/library modules 中原有的lib是
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib,
    我们需要添加的是 comctl32.lib rpcrt4.lib wsock32.lib wxmswd.lib,对于最后一个wxmswd.lib,有下表说明

    发行版本
    额外添加的wxWindows库(library)
    Debug
    wxmswd.lib Debug Unicodewxmswud.libDebug DLLwxmsw24d.lib(8.3格式,我的是2.4.2版本)Debug Unicode DLL
    wxmsw24ud.lib(8.3格式?我晕,有变化~!)Release
    wxmsw.libRelease Unicode wxmswu.libRelease DLLwxmsw24.libRelease Unicode DLLwxmsw24u.lib
    另外,如果你需要处理图像,可以再添加pngd.lib jpegd.lib tiffd.lib (这些是调试版的,调试版的lib有XXXd.lib的形式,发行版Release的用的是XXX.lib),如果你想使用正则表达式, 添加regexd.lib,使用zip功能,添加zlibd.lib.
    处理图像,注意参看sample目录下的image例子.
    还有一个比较重要而且比较先进的是,如果你使用wxWindows的专用XML资源文件(.xrc文件)你还必须包含wxxrc.lib(这个库,你要另外编译src目录下的相关工程),这些在后面的配置中就不敷述了.
  2. 分类下拉框中选定Input,在Ignore libraries 中添加libcd.lib
Resources选项卡
  1. 在 Additional resource include directories 中添加$(WXWIN)/include ,注意这一步不是必须的,可以不用设置.
    但是当你需要使用wxWindows特定格式的XML格式的资源文件(rc)的时候,应该注意把$(WXWIN) /contrib/include目录包含进来


编译发行版(Win32 Release)
General选项卡
默认吧^_^
C/C++选项卡
  1. 分类下拉框中选定General, 在PreProcessor difinitions 中添加: NDEBUG,WIN32,_WINDOWS,WINVER=0x400,_MT,wxUSE_GUI=1
  2. 分类下拉框中选定PreProcessor, 在Additional include directories 中添加:
    $(WXWIN)/lib/msw
    注,因为你编译的是Release版本,并且不使用DLL,而Release版的必须包含Release版的setup.h,它位于$(WXWIN)/ lib/ msw  目录下的wx/setup.h,虽然在这个wx子目录下面,但是包含到msw目录就可以了.

  3. 分类下拉框中选定PreCompiled Headers, 选择Not using precompiled headers 或者 Automatic use of precompiled headers (推荐).
  4. 分类下拉框中选定Code Generation , 在Use run-time library 中选择Multithreaded DLL(Release版用这个).
Link选项卡
  1. 分类下拉框中选定General,Object/library modules 中原有的lib是
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib,
    我们需要添加的是 comctl32.lib rpcrt4.lib wsock32.lib wxmsw.lib,对于最后一个wxmsw.lib,在上面有说明

    另外,如果你需要处理图像,可以再添加png.lib jpeg.lib tiff.lib (这些是发行版Release用的),如果你想使用正则表达式, 添加reged.lib,使用zip功能,添加zlid.lib
    还有一个比较重要而且比较先进的是,如果你使用wxWindows的专用XML资源文件(.xrc文件)你还必须包含wxxrc.lib(这个库,你要另外编译src目录下的相关工程),这些在后面的配置中就不敷述了.
  2. 分类下拉框中选定Input,在Ignore libraries 中添加libc.lib,注意和Debug版本比较一下,debug忽略的是libcd.lib
Resources选项卡
在 Additional resource include directories 中添加$(WXWIN)/include ,注意这一步不是必须的,可以不用设置.
但是当你需要使用wxWindows特定格式的XML格式的资源文件(rc)的时候,应该注意把$(WXWIN) /contrib/include目录包含进来

编译发行Release DLL版(Win32 Release DLL)
首先你的确保你把 wxmsw24ud.dll wxmsw24.dll wxmsw24u.dll wxmsw24d.dll这几个文件(在lib目录下)复制到你的Windows/System32/目录下去,免得程序运行的时候,弹出找不到 XXX.dll的错误.
另外这里说一点闲话,对比MFC的dll(比如MFC42.dll),这几个dll的大小是它的几倍,MFC42.dll只有900多KB,而上面这几个 dll,都是2~4MB
你可能还不知道怎么编译Win32 Release DLL版本,因为编译器默认的只有Win32 Debug 版和Win32 Release 版.这里告诉你步骤: Build>>Config>>弹出configurations对话框>>单击Add按钮>>弹出 Add Project configuration对话框>>在Configuration中输入 Release DLL>>在Copy Settings From中选择XXX-Win32 Release(你如果是Win32 Debug DLL,就从XXX-Win32 Debug复制配置)>>单击OK,成功!
General选项卡
默认吧^_^
C/C++选项卡
  1. 分类下拉框中选定General, 在PreProcessor difinitions 中添加: NDEBUG,WIN32,_WINDOWS,WINVER=0x400,_MT,wxUSE_GUI=1,WXUSINGDLL=1
  2. 分类下拉框中选定PreProcessor, 在Additional include directories 中添加:
    $(WXWIN)/lib/mswdll
    注,因为你编译的是Release版本,并且使用了DLL,而Release DLL版的必须包含Release DLL版的setup.h,它位于$(WXWIN)/ lib/ mswdll  目录下的wx/setup.h,虽然在这个wx子目录下面,但是包含到mswdll目录就可以了.

  3. 分类下拉框中选定PreCompiled Headers, 选择Not using precompiled headers 或者 Automatic use of precompiled headers (推荐).
  4. 分类下拉框中选定Code Generation , 在Use run-time library 中选择Multithreaded DLL(Release版用这个).
Link选项卡
  1. 分类下拉框中选定General,Object/library modules 中原有的lib是
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib,
    我们需要添加的是 comctl32.lib rpcrt4.lib wsock32.lib wxmsw24.lib ,对于最后一个wxmsw24.lib ,在上面有说明

  2. 分类下拉框中选定Input,在Ignore libraries 中添加libc.lib,注意和Debug版本比较一下,debug忽略的是libcd.lib
Resources选项卡
在 Additional resource include directories 中添加$(WXWIN)/include ,注意这一步不是必须的,可以不用设置.
但是当你需要使用wxWindows特定格式的XML格式的资源文件(rc)的时候,应该注意把$(WXWIN) /contrib/include目录包含进来

编译调试Debug DLL版(Win32 Debug DLL) 和上面的类似,NDEBUG改为_DEBUG,相应的改动包含的lib文件.
编译发行Release Unicode版(Win32 Release Unicode)
General选项卡
默认吧^_^
C/C++选项卡
  1. 分类下拉框中选定General, 在PreProcessor difinitions 中添加: NDEBUG,WIN32,_WINDOWS,WINVER=0x400,_MT,wxUSE_GUI=1,_UNICOEDE,UNICODE
  2. 分类下拉框中选定PreProcessor, 在Additional include directories 中添加:
    $(WXWIN)/lib/mswu
    注,因为你编译的是Release Unicode版本,并且不使用DLL,而Release版的必须包含Release版的setup.h,它位于$(WXWIN)/ lib/ mswu目录下的wx/setup.h,虽然在这个wx子目录下面,但是包含到mswu目录就可以了.

  3. 分类下拉框中选定PreCompiled Headers, 选择Not using precompiled headers 或者 Automatic use of precompiled headers (推荐).
  4. 分类下拉框中选定Code Generation , 在Use run-time library 中选择Multithreaded DLL(Release版用这个).
Link选项卡
  1. 分类下拉框中选定General, Object/library modules 中原有的lib是
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib,
    我们需要添加的是 comctl32.lib rpcrt4.lib wsock32.lib wxmswu.lib,对于最后一个wxmswu.lib,在上面有说明

  2. 分类下拉框中选定Input,在Ignore libraries 中添加libc.lib,注意和Debug版本比较一下,debug忽略的是libcd.lib
Resources选项卡
在 Additional resource include directories 中添加$(WXWIN)/include ,注意这一步不是必须的,可以不用设置.
但是当你需要使用wxWindows特定格式的XML格式的资源文件(rc)的时候,应该注意把$(WXWIN) /contrib/include目录包含进来

编译调试Debug Unicode版(Win32 Debug Unicode) 和上面的类似,NDEBUG改为_DEBUG,相应的改动包含的lib文件.
编译发行Release Unicode DLL版(Win32 Release Unicode DLL)
General选项卡
默认吧^_^
C/C++选项卡
  1. 分类下拉框中选定General, 在PreProcessor difinitions 中添加: NDEBUG,WIN32,_WINDOWS,WINVER=0x400,_MT,wxUSE_GUI=1,WXUSINGDLL=1,_UNICOEDE,UNICODE,
  2. 分类下拉框中选定PreProcessor, 在Additional include directories 中添加:
    $(WXWIN)/lib/mswdllu
    注,因为你编译的是Release Unicode版本,并且使用DLL,而Release Unicode版的必须包含Release Unicode版的setup.h,它位于$(WXWIN)/ lib/ mswdllu 目录下的wx/setup.h,虽然在这个wx子目录下面,但是包含到mswdllu 目录就可以了.

  3. 分类下拉框中选定PreCompiled Headers, 选择Not using precompiled headers 或者 Automatic use of precompiled headers (推荐).
  4. 分类下拉框中选定Code Generation , 在Use run-time library 中选择Multithreaded DLL(Release版用这个).
Link选项卡
  1. 分类下拉框中选定General,Object/library modules 中原有的lib是
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib,
    我们需要添加的是 comctl32.lib rpcrt4.lib wsock32.lib wxmsw.lib,对于最后一个wxmsw.lib,在上面有说明

    另外,如果你需要处理图像,可以再添加png.lib jpeg.lib tiff.lib (这些是发行版Release用的),如果你想使用正则表达式, 添加reged.lib,使用zip功能,添加zlid.lib
    还有一个比较重要而且比较先进的是,如果你使用wxWindows的专用XML资源文件(.xrc文件)你还必须包含wxxrc.lib(这个库,你要另外编译src目录下的相关工程),这些在后面的配置中就不敷述了.
  2. 分类下拉框中选定Input,在Ignore libraries 中添加libc.lib,注意和Debug版本比较一下,debug忽略的是libcd.lib
Resources选项卡
在 Additional resource include directories 中添加$(WXWIN)/include ,注意这一步不是必须的,可以不用设置.
但是当你需要使用wxWindows特定格式的XML格式的资源文件(rc)的时候,应该注意把$(WXWIN) /contrib/include目录包含进来

编译调试Debug Unicode DLL版(Win32 Debug Unicode DLL) 和上面的类似,NDEBUG改为_DEBUG,相应的改动包含的lib文件.
不过这里还要强调一点的是,所有的Unicode版的,加入 _UNICODE 和 UNICODE  我没有试过,如果谁试过就给我指出错误来,在此谢过.

有一点参考资料写在最上面了.

结语: 祝大家好运,鸡年大吉!
huyoo于2005年4月1日,好像是愚人节咯~
联系我,请发邮件至 huyoo353{at}126{dot}com