下载
DialogBlocks官网下载地址:http://www.dialogblocks.com/download.htm
wxWidgets官网下载地址:http://www.wxwidgets.org/downloads/
建议下载源码的同时把帮助文档也下载下来
Note:如果不想编译的安装看我另一篇:https://blog.csdn.net/qq_23918781/article/details/81077285
第三方依赖库:
包括:opengl x11 webkit libsecret libtiff5 gstream
sudo apt install libgl1-mesa-dev libx11-dev libwebkit-dev libsecret-1-dev libtiff5-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
源码编译:
摘录官方源码编译CMake配置重要选项如下,个人建议新手朋友,把红色部分打开,其他保持默认即可.
Option Name | Type | Default | Description |
---|---|---|---|
wxBUILD_SHARED | BOOL | ON | Build shared libraries |
wxBUILD_TESTS | STRING | OFF | CONSOLE_ONLY, ALL or OFF |
wxBUILD_SAMPLES | STRING | OFF | SOME, ALL or OFF |
wxBUILD_DEMOS | BOOL | OFF | Build demo applications |
wxUSE_GUI | BOOL | ON | Build the UI libraries |
wxBUILD_COMPATIBILITY | STRING | 3.0 | 2.8, 3.0 or 3.1 API compatibility |
wxBUILD_PRECOMP | BOOL | ON | Use precompiled headers |
wxBUILD_MONOLITHIC | BOOL | OFF | Build a single library |
Note:如果make过程中遇到错误,比如
../lib/libwx_gtk2u_media-3.1.so:对‘_wx_link_dummy_func_basewxmediabackends()’未定义的引用
可以把SAMPLES改为SOME,而不是ALL,configure和generate一下,继续make即可。
编译例程:
在wxWidgets解压出的文件夹中,你可以看到一个configure文件,此时可以:
等待该脚本为我们生成Makefile文件,完毕后,到samples文件夹下,是不是有个Makefile!
在该目录下执行make命令,看看是不是几乎samples下的每个文件夹内都生成了可执行文件!
当然,如果你不想全部生成,到samples的某个子文件夹下,单独make也是可以的(比如下面的dragimag)
开始编程
wxWidgets的CMake编译
如果嫌DialogBlocks不免费或者其他原因想使用CMake开发,下面提供一个供CMake编译的Sample:
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
project(wxTest)
#如果遇到提示需要-std=c++11,则这句必须加上
set(CMAKE_CXX_STANDARD 11)
#只使用一个源文件,即同目录下的main.cpp
add_executable(myapp main.cpp)
#找到wxWidgets的相关包,直接使用即可
find_package(wxWidgets REQUIRED COMPONENTS net core base)
include(${wxWidgets_USE_FILE})
target_link_libraries(myapp ${wxWidgets_LIBRARIES})
main.cpp文件内容:
//直接命令行编译:g++ main.cpp `wx-config --cxxflags --libs std,aui` -o myApp
#include <wx/wx.h>
class Demo : public wxFrame
{
public:
Demo(const wxString &title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(200, 200))
{
Centre();
}
};
class MyApp : public wxApp
{
public:
bool OnInit()
{
Demo *demo = new Demo(wxT("Title"));
demo->Show(true);
return true;
}
};
wxIMPLEMENT_APP(MyApp);