如何编译wxWidgets示例程序

如何编译wxWidgets示例程序,第1张

wxWidgets

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12261374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存