下載
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);