在Linux下使用wxWidgets进行跨平台GUI开发

wxWidgets是一个功能强大的跨平台C++ GUI框架,支持Windows、Linux和macOS等多种平台。本文将详细介绍在Linux系统(以Ubuntu为例)上安装、配置和使用wxWidgets的完整过程,包括从源码编译、CMake工程配置到VS Code开发环境搭建的全套指南。

安装wxWidgets开发环境

1. 配置GTK+开发环境

首先需要安装GTK+开发库和相关依赖:

sudo apt-get update
sudo apt-get install libgtk-3-dev
sudo apt install libpcre2-dev

2. 获取并解压wxWidgets源码

wxWidgets官方网站下载最新源码包(以3.2.4为例):

tar xzf wxWidgets-3.2.4.tar.gz

注意:如果解压后发现3rdpartysrc/expat目录为空,需要从wxWidgets GitHub仓库下载补充这些文件。

3. 编译安装wxWidgets

进入解压目录并创建构建目录:

cd wxWidgets-3.2.4
mkdir build-gtk
cd build-gtk

配置编译选项(这里选择静态链接和Unicode支持):

../configure --with-gtk --disable-shared --enable-unicode

开始编译和安装:

make
sudo make install
sudo ldconfig # 更新动态链接库缓存

4. 验证安装

检查安装是否成功:

wx-config --version  # 应输出3.2.4
wx-config --cxxflags --libs # 查看编译器标志和链接库

新建一个wxWidgets应用示例

创建一个简单的main.cpp测试文件:

#include <wx/wx.h>

class MyApp : public wxApp {
public:
virtual bool OnInit() {
wxFrame *frame = new wxFrame(NULL, wxID_ANY, "Hello World");
frame->Show(true);
return true;
}
}; wxIMPLEMENT_APP(MyApp);

使用命令行编译运行:

g++ main.cpp `wx-config --cxxflags --libs` -o main
./main

成功运行后将显示一个简单的GUI窗口。

使用CMake构建wxWidgets工程

为了更规范地管理项目,我们使用CMake来构建工程。创建CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.10)
project(hello) find_package(wxWidgets REQUIRED COMPONENTS core base)
include(${wxWidgets_USE_FILE}) add_executable(hello main.cpp)
target_link_libraries(hello ${wxWidgets_LIBRARIES})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})

构建并运行:

mkdir build
cd build
cmake .. && make
../hello

简单说明上述CMakeLists.txt文件,指定工程项目的名称为hello,使用find_package命令查找并导入了所使用的wxWidgets库(显式指定了一个GUI程序所必须的core和base组件),然后包含wxWidgets设置引用这个外部库,创建可执行文件hello并链接wxWidgets库,最后指定工程目录(test目录)为输出路径。

在VS Code中搭建开发环境

1. 安装必要扩展

  • C/C++扩展 (ms-vscode.cpptools)
  • CMake Tools扩展 (ms-vscode.cmake-tools)

2. 配置VS Code设置

创建.vscode/settings.json

{
"cmake.configureSettings": {},
"cmake.buildDirectory": "${workspaceFolder}/build",
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

3. 配置调试环境

创建.vscode/launch.json调试配置文件:

{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/hello",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

4. 使用VS Code构建和调试

  1. Ctrl+Shift+P选择CMake: Select a Kit(选择GCC工具链)
  2. 选择CMake: Configure配置项目
  3. 选择CMake: Build构建项目
  4. F5启动调试

也可以使用侧边栏CMake图标等进行更直观的图形化操作。

5. 跨平台开发注意事项

  1. 路径处理:始终使用正斜杠/作为路径分隔符
  2. 平台特定代码:使用预定义宏如__WXGTK____WXMSW__处理平台差异
  3. 资源文件:Windows需要.rc资源文件,Linux通常不需要
  4. 外观差异:不同平台下控件外观可能不同,应测试各平台表现

通过以上步骤,你已经成功在Linux系统上搭建了完整的wxWidgets开发环境,可以使用CMake和VS Code进行高效的跨平台GUI应用程序开发。

在Linux下使用wxWidgets进行跨平台GUI开发的更多相关文章

  1. Linux下C ,C ++, Qt开发环境

    目录 Linux发行版的选择 安装常用的开发工具(这里针对C/C++/Qt) 安装openGL 中文输入法 安装sublime text 安装vscode apt-get常用命令 Qt环境 Qt常见问 ...

  2. 《使用wxWidgets进行跨平台程序开发》chap09——布局一个对话框

    ///////////////////////////////////////////////////////////////////////////// // Name: personalrecor ...

  3. Linux下串口与工业协议的开发

    1.串口通信原理 串口通信定义 串口通信:数据的串行传送方式.串口通信可分为同步通信与异步通信. 同步通信:按照软件识别同步字符来实现数据的发送和接收. 将许多字符组成一个信息组进行发送 要求发送时钟 ...

  4. 《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序

    // Name: minimal.cpp // Purpose: Minimal wxWidgets sample // Author: Julian Smart #include "wx/ ...

  5. Ubuntu 14.04 下使用微软的跨平台轻量级开发神器 Visual Studio Code

    因为 Visual Studio Code 不断更新,官方最新 v1.32 的 .deb 包已经不能用于 Ubuntu 14.04 直接安装了. 下载 v1.31 的 deb 包安装即可:https: ...

  6. Linux下移植pjsip,使用QT开发

    1.移植pjsip env:fedora14 arm-linuc-gcc:gcc version 4.5.1 (ctng-1.8.1-FA) #./configure \ CC=arm-linux-g ...

  7. linux 下 ifcfg-eth0 配置/CentOS_minimal安装和开发环境部署

    CentOS_minimal安装和开发环境部署:http://www.th7.cn/system/lin/201305/39002.shtml 网络接口配置文件 [root@localhost ~]# ...

  8. linux 下安装 mysql 并配置 python 开发环境

    1.安装 mysql ,安装过程中将提示设置 root 用户的密码,默认可以设置为 rootadmin . $ sudo apt-get install mysql-server 2.安装 mysql ...

  9. Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)

    参考链接: MXE.>大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Lin ...

  10. C++和C在linux下 和在windows下有什么区别?

    一.函数库的区别 linux下的C函数库和windows下的函数库系统调用的机制不一样,Glibc包含了主要的C库.这个库提供了基本例程,用于分配内存.搜索目录.打开关闭文件.读写文件.字串处理.模式 ...

随机推荐

  1. MySQL 8.0 误删了root用户怎么办

    MySQL 8.0 误删了root用户怎么办 修改配置文件 修改配置文件,让其可以无账号登录 默认的文件为: /etc/my.cnf 添加:skip-grant-tables 重启服务 service ...

  2. 变速精灵+百D网盘

    首先找一下相对低一点版本的客户端,比如7.26.10 https://issuepcdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_7.26 ...

  3. 漏洞编号CVE-2022-27191 漏洞公告 ALINUX3-SA-2024:0050: container-tools:rhel8 安全和BUG修复更新

    基于Debian的系统(如Ubuntu),使用apt sudo apt-get update sudo apt-get install --only-upgrade container-selinux ...

  4. Joker 前端框架组件的生命周期:深度解析与实践应用

    在 Joker 前端框架的开发体系中,组件的生命周期犹如一颗精准的导航星,指引着开发者构建高效.稳定且富有交互性的应用程序.它完整地涵盖了从组件实例诞生的那一刻起,直至其完成使命被销毁的全过程,每一个 ...

  5. 选择排序--java进阶day06

    1.选择排序 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996881 了解了选择排序之后,我们来找其中的规律 2.规律 选择排序就是一个元素和数组后续元素 ...

  6. 部署负载均衡:LVS-DR群集(直连路由模式)

    部署负载均衡:LVS-DR群集(直连路由模式) 文章目录 部署负载均衡:LVS-DR群集(直连路由模式) 一.LVS-DR数据包流向分析 二.LVS-DR中的ARP问题 三.LVS 负载均衡群集-DR ...

  7. Springboot+MongoDB添加数据时会自带_class字段

    _class字段作用 帮助映射子类,为了方便处理Pojo中存在继承的情况,增加系统的扩展性 去除_class字段 新增mongodb的配置类,配置mappingMongoConverter,配置类网上 ...

  8. Electron 开发:获取当前客户端 IP

    Electron 开发:获取当前客户端 IP 一.背景与需求 1. 项目背景 客户端会自启动一个服务,Web/后端服务通过 IP + port 请求以操作客户端接口 2. 初始方案与问题 2.1. 初 ...

  9. mysql 的group by 满足的规则要求

    GROUP BY满足的规则: 所有select 字段,除了聚合函数中的字段,都必须出现在GROUP BY 中. 例如:SELECT name,age,max(salary) FROM t_employ ...

  10. 从excle中读取数据的方法

    倒入两个库:ExcelLibrary,Collections 首先,必须注意文件格式为xls 表格内容 open_Excel    C:\\Users\\Beckham\\Desktop\\a.xls ...