wxWidgets是一个程序开发框架/库, 允许你在Windows、Mac、Linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl、Ruby。
本教程中我将向你展示如何在基于Debian的linux中如Ubuntu和Linux Mint中编译wxwidgets 3.0+。
从源码编译wxWidgets并不困难,仅仅需要几分钟。库可以按不同的方式来编译,比如静态或者动态库。
1. 下载 wxWidgets
第一步你需要从wxwidgets.org下载wxWidgets源码文件。
做完后,解压到目录。
2. 设置编译环境
要编译wxwidgets,我们需要一些工具包括C++编译器,在Linux上是g++。所有这些可以通过apt-get工具从仓库中安装。
我们还需要wxWidgets依赖的GTK开发库。
$ sudo apt-get install libgtk-3-dev build-essential checkinstall
这个叫做checkinstall的工具允许我们为wxwidgets创建一个安装包,这样之后就可以轻松的使用包管理器来卸载。
3. 编译 wxWidgets
进入到wxWidgets解压后的目录。为了保持清洁,创建一个编译用的目录。
$ mkdir gtk-build
$ cd gtk-build/
现在运行configure和make命令。每个将花费一些时间来完成。
$ ../configure --disable-shared --enable-unicode
$ make
"--disable-shared"选项将会编译静态库而不是动态旅察库。
make命令完成后,编译就成功了。是时候安装wxWidgets到正确的目录。
更多信息请参考install.txt和readme.txt,这可在wxwidgets中的/docs/gtk/目录下找到。
4. 安装 checkinstall
现在我们不使用"make install"命令,我们使用checkinstall命令来创建一个wxwidgets的deb安装包。运行命令:
$ sudo checkinstall
checkinstall会询问几个问题,请保证在提问后提供一个版本号,否则将会失败。
完成这一切后,wxWidgets就安装好了,deb文件也会创建在相同的目录下。
5. 追踪安装的文件
如果你想要检查文件安装的位置,使用dpkg命令后面跟上checkinstall提供的包名。
$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/拆虚茄local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a
6. 编译示例
编译wxWidgets完成后就可以马上编译示例程序了。在相同的目录下,一个新的sample目录已经创建了。
进入它并运行下面的命令
$ compile samples
$ cd samples/
$ make
make命令完成后,进入sample 子目录,这里就有一个可以马上誉茄运行的Demo程序了。
7. 编译你的第一个程序
你完成编译demo程序后,可以写你自己的程序来编译了。这个也很简单。
假设你用的是C++,这样的话你还可以使用编辑器的高亮特性。比如gedit、kate、kwrite等等。或者用全功能的IDE像Geany、Codelite、Codeblocks等等。
然而你的第一个程序只需要用一个文本编辑器来快速完成。
如下:
#includewx.h>
classSimple:public wxFrame
{
public:
Simple(const wxString&title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250,150))
{
Centre()
}
}
classMyApp:public wxApp
{
public:
boolOnInit()
{
Simple*simple =newSimple(wxT("Simple"))
simple->Show(true)
returntrue
}
}
wxIMPLEMENT_APP(MyApp)
现在保存并用下面的命令编译。
# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std`-o program
# run
$ ./program
如果要在Windows系统上使用wxWidgets编程并使用CodeBlocks,可以采用以下步骤进行配置:
首先需要下载并安装wxWidgets和CodeBlocks,确保安装目录中包含了wxWidgets的头文件和库文件。
打开CodeBlocks,在菜单栏中选择“Settings”,然后选择“Compiler and Debugger”。
在“Compiler and Debugger”窗口中,选择“Global compiler settings”,然后选择“Search directories”标签。
点击“Add”按钮,添加wxWidgets的头文件目录和库文件目录。
回到主界面,新建一个工程,在工程中添加相关的代码文件。
在工程属性设置中,链接相关的wxWidgets库文件。
编译运行工程,确保没有错误。
如果不使用IDE,可以使用命令行编译器来编译wxWidgets程序。首先需要确保环境变量中包含了相关的头文件和库文件的路径,然后可以使用编译器进行编译和链接。
例如,使用Visual C++编译器编译wxWidgets程序,可以使用如下命令:
cl /EHsc main.cpp -I"wxWidgets的头文件目录" -L"wxWidgets的库文件目录" -lwxmsw31u_core -lwxbase31u
以上命令会编译 main.cpp 文件,并使用 wxWidgets 的头文件和库文件,将编译结果链接为可执行文件。
请注意,以上命令是基于Visual C++编译器为例,其他编译器命令可能会有所不同。
搭建wxWidgets开发环境并写Makefile主要需要以下步骤:
下载并安装wxWidgets。
在环境变量中设置wxWidgets的头文件和库文件的目录。
在项散蔽姿目目录中新建Makefile文件。
在Makefile文件中定义编译器和链并哪接器的相关参数,冲绝如编译选项、链接选项、头文件目录和库文件目录。
在Makefile文件中定义编译规则,指定源文件、目标文件和依赖关系。
运行make命令编译工程。
以下是一个简单的例子:
# 编译器和链接器
CXX = g++
# 编译选项
CXXFLAGS = -Wall -O2 -I"wxWidgets的头文件目录"
# 链接选项
LDFLAGS = -L"wxWidgets的
库文件目录" -lwxmsw31u_core -lwxbase31u
目标文件
TARGET = myprogram
源文件
SOURCES = main.cpp
依赖关系
OBJECTS = $(SOURCES:.cpp=.o)
编译规则
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CXX) $(LDFLAGS) -o $@ $^
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
清除中间文件
clean:
rm -f $(OBJECTS) $(TARGET)
上面的Makefile文件定义了编译器、链接器、编译选项、链接选项、目标文件、源文件和依赖关系。编译规则中的$(TARGET)和$(OBJECTS)表示目标文件和依赖文件。通过运行make命令编译工程。如果要清除中间文件,可以运行make clean命令。
请注意,上述的Makefile文件只是一个简单的例子,在实际项目中可能需要根据项目的具体情况进行调整。
1 、打开工程 wxWidgets-2.8.7\build\msw\wx_dll.dsw ,将其转换为 vs2005 工程关闭保存,再打开工程 wx_dll.sln 。2 、将解决方案配置更换为 DLL Unicode Debug 。
3 、依次单独编译 wxregex 、 wxzlib 、 wxexpat 、 wxtiff 、 base 、 wxjpeg 、 wxpng 、 core 、 odbc 、 xml 、 adv 、 html 、 net 、 gl 、 dbgrid 、 qa 、 richtext 、 aui 、 xrc 、 media 库。
其中目前版本 odbc 、 gl 、 dbgrid 工程并不完善,出现编译错误忽略即可。
4 、如果以上顺利通过,那么将得到以下我们需要的库文件
编译预定义环境
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\ setup.h
wxWidgets-2.8.7\lib\vc_dll\mswud\wx\msw\ rcdefs.h
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_odbc_vc_custom.dll
没念没wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_vc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_aui_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_gl_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext_vc_custom.dll
w xWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc_vc_custom.dll
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_net.lib
wxWidgets-2.8.7\lib\vc_dll\wxbase28ud_xml.lib
wxWidgets-2.8.7\lib\vc_dll\wxexpatd.lib
wxWidgets-2.8.7\lib\vc_dll\wxjpegd.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_adv.lib
wxWidgets-2.8.7\高氏lib\vc_dll\wxmsw28ud_aui.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_core.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_html.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_media.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_qa.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_richtext.lib
wxWidgets-2.8.7\lib\vc_dll\wxmsw28ud_xrc.lib
wxWidgets-2.8.7\lib\vc_dll\wxpngd.lib
枯纳wxWidgets-2.8.7\lib\vc_dll\wxregexud.lib
wxWidgets-2.8.7\lib\vc_dll\wxtiffd.lib
wxWidgets-2.8.7\lib\vc_dll\wxzlibd.lib
注意:将以上文件按照文件按照原目录相对结构拷贝到要制作的库路径下,并将 wxWidgets-2.8.7\ include 目录也拷贝到其目录下,以后要使用只需要包含这些路径即可。
为了以后开发方便,设定的开发库路径为:
wxLib\include
wxLib\Debug\mswud\wx\msw
wxLib\Debug
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)