Windows下通过MinGW进行WxWidgets的动态编译与静态编译
2016-03-31 15:15
549 查看
1.在Window中下载MingW
2.为MingW设置环境变量,确保在CMD中可以找到ming32-make。
3.下载wxWidgets的源码包
4.在CMD中进入wxWidgets\build\msw,执行下面的命令进行编译(根据自己的需要进行编译,不用全部编译)
MONOLITHIC=1的含义:将生成的库文件整合的一个文件中,这个文件会很大。所以我一般将MONOLITHIC设置为0。
动态库debug版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=debug
动态库release版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=release
静态库release版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=0 UNICODE=1 BUILD=release
上面编译完成后,会生成对应的lib库
静态库文件
wxWidgets\lib\gcc_lib
静态库所需的头文件,release版本在mswu中,debug版本在mswud中,因为我们没有生成静态库的debug版本,所以不会出现mswud这个文件夹。
wxWidgets\lib\gcc_lib\mswu
动态库文件
wxWidgets\lib\gcc_dll
静态库所需的头文件,release版本在mswu中
wxWidgets\lib\gcc_dll\mswu
静态库所需的头文件,debug版本在mswud中
wxWidgets\lib\gcc_dll\mswud
5.写个测试文件Hello.cpp
6.在CMD中进入Hello.cpp所在的文件夹,输入下面的编译命令:
动态库(Release)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
静态库(Release)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
动态库(Debug)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
※关于wxWidgets静态库版本必须的库文件
静态链接时需要的wxWidgets库 (xx is wxWidgets version, such as 30):
libwxmswxxu_core.a
libwxbasexxu.a
libwxpng.a
libwxjpeg.a
libwxtiff.a
libwxzlib.a
静态链接需要额外链接Windows的库(在mingw\lib\目录下)
libole32.a
libuuid.a
libcomctl32.a
liboleaut32.a
libcomdlg32.a
libwinspool.a
libgdi32.a
libShlwapi.a
libversion.a
※去除默认生成的wxWidgets程序的控制台窗口
由于编译时使用的是控制台方式,所以生成的程序会多出一个控制台窗口,
应该使用GUI方式。解决的方法是向链接器ld传入“--subsystem,windows”参数,这需要用-Wl让gcc把这个参数传给ld。
动态库(Release)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
静态库(Release)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
动态库(Debug)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
2.为MingW设置环境变量,确保在CMD中可以找到ming32-make。
3.下载wxWidgets的源码包
4.在CMD中进入wxWidgets\build\msw,执行下面的命令进行编译(根据自己的需要进行编译,不用全部编译)
MONOLITHIC=1的含义:将生成的库文件整合的一个文件中,这个文件会很大。所以我一般将MONOLITHIC设置为0。
动态库debug版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=debug
动态库release版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=1 UNICODE=1 BUILD=release
静态库release版本:
mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=0 UNICODE=1 BUILD=release
上面编译完成后,会生成对应的lib库
静态库文件
wxWidgets\lib\gcc_lib
静态库所需的头文件,release版本在mswu中,debug版本在mswud中,因为我们没有生成静态库的debug版本,所以不会出现mswud这个文件夹。
wxWidgets\lib\gcc_lib\mswu
动态库文件
wxWidgets\lib\gcc_dll
静态库所需的头文件,release版本在mswu中
wxWidgets\lib\gcc_dll\mswu
静态库所需的头文件,debug版本在mswud中
wxWidgets\lib\gcc_dll\mswud
5.写个测试文件Hello.cpp
#include <wx/wx.h> class Simple : public wxFrame { public: Simple(const wxString& title); }; Simple::Simple(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150)) { Centre(); } class MyApp : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { Simple *simple = new Simple(wxT("Simple")); simple->Show(true); return true; }
6.在CMD中进入Hello.cpp所在的文件夹,输入下面的编译命令:
动态库(Release)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
静态库(Release)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
动态库(Debug)版本:
g++ minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
※关于wxWidgets静态库版本必须的库文件
静态链接时需要的wxWidgets库 (xx is wxWidgets version, such as 30):
libwxmswxxu_core.a
libwxbasexxu.a
libwxpng.a
libwxjpeg.a
libwxtiff.a
libwxzlib.a
静态链接需要额外链接Windows的库(在mingw\lib\目录下)
libole32.a
libuuid.a
libcomctl32.a
liboleaut32.a
libcomdlg32.a
libwinspool.a
libgdi32.a
libShlwapi.a
libversion.a
※去除默认生成的wxWidgets程序的控制台窗口
由于编译时使用的是控制台方式,所以生成的程序会多出一个控制台窗口,
应该使用GUI方式。解决的方法是向链接器ld传入“--subsystem,windows”参数,这需要用-Wl让gcc把这个参数传给ld。
动态库(Release)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
静态库(Release)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_lib -lwxmsw31u_xrc -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u_xml -lwxbase31u_net -lwxbase31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
动态库(Debug)版本:
g++ -Wl,--subsystem,windows minimal.cpp -o minimal -I C:\MyProgram\wxWidgets-3.1.0\include -I C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll\mswu -L C:\MyProgram\wxWidgets-3.1.0\lib\gcc_dll -lwxmsw31ud_xrc -lwxmsw31ud_html -lwxmsw31ud_adv -lwxmsw31ud_core -lwxbase31ud_xml -lwxbase31ud_net -lwxbase31ud -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lShlwapi -lversion
相关文章推荐
- 数据库存储安全之(MD5+盐)加密
- shell多线程
- 第十章:DOM文档对象模型
- Maven 下的spring框架(一创建项目)
- NFC使用
- Linux常用命令
- Android--BroadcastReceiver应用详解
- Unity5.x中Skybox天空盒子的设置的两种方法
- Phabricator搭建
- js中的addEventListener【转自博客园】
- LValue RValue
- 19、AngularJs知识点总结 part-1
- lightetreeview
- 超好用的前嗅ForeSpider爬虫软件教程
- 虚函数、纯虚函数和多态
- qt环境下使用OpenGL
- JVM tuning
- Glide之GlideModule
- C++学习基础
- 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛