Linux下用DialogBlocks和wxWidgets製作GUI的環境配置與測試

下載

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章