当前位置: 首页 > news >正文

用Ai学习wxWidgets笔记——在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程

声明:本文整理筛选Ai工具生成的内容辅助写作,仅供参考

>> 在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程

下面是一步步指导如何在 VS Code 中配置 wxWidgets 开发环境,包括跨平台设置(Windows 和 Linux)。

1. 准备工作

安装必要组件

  • 安装 VS Code
  • 安装 CMake 扩展(ms-vscode.cmake-tools)
  • 安装 C++ 扩展(ms-vscode.cpptools)
  • 安装 CMake(建议 3.10 或更高版本)

安装 wxWidgets

Windows:

# 使用 vcpkg 安装
vcpkg install wxwidgets

Linux (Ubuntu/Debian):

sudo apt-get install libwxgtk3.0-gtk3-dev

Ai生成不完整,安装方式有很多,这里推荐两篇关于 Linux 下的 wxWidgets 安装的文章:
1)wxWidgets 在 Linux 下开发环境配置 - Anonymous596 - 博客园
2)https://blog.csdn.net/weixin_44211462/article/details/145368027 - link

2. 创建项目结构

my_wx_project/
├── .vscode/
│   ├── settings.json
│   └── cmake-kits.json (可选)
├── CMakeLists.txt
├── src/
│   ├── main.cpp
│   └── MyFrame.h
│   └── MyFrame.cpp
└── resources/└── app.rc (Windows)

3. 配置 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyWxApp)# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 查找wxWidgets包
find_package(wxWidgets REQUIRED COMPONENTS core base adv)# 包含wxWidgets设置
include(${wxWidgets_USE_FILE})# 添加可执行文件
add_executable(${PROJECT_NAME}src/main.cppsrc/MyFrame.cppsrc/MyFrame.h
)# Windows特定设置
if(WIN32)# 添加资源文件if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/app.rc")target_sources(${PROJECT_NAME} PRIVATE "resources/app.rc")endif()# 设置为Windows应用程序(不显示控制台)set_target_properties(${PROJECT_NAME} PROPERTIESWIN32_EXECUTABLE TRUE)
endif()# 链接wxWidgets库
target_link_libraries(${PROJECT_NAME} PRIVATE ${wxWidgets_LIBRARIES})# 包含目录
target_include_directories(${PROJECT_NAME} PRIVATE${wxWidgets_INCLUDE_DIRS}${CMAKE_CURRENT_SOURCE_DIR}/src
)# 安装目标
install(TARGETS ${PROJECT_NAME} DESTINATION bin)

4. 配置 VS Code

.vscode/settings.json

{"cmake.configureSettings": {// Windows下使用vcpkg的wxWidgets"CMAKE_TOOLCHAIN_FILE": "C:/vcpkg/scripts/buildsystems/vcpkg.cmake",// Linux下通常不需要特殊设置// 如果需要特定版本可以设置路径// "wxWidgets_ROOT_DIR": "/usr/local/wxWidgets-3.1.5"},"cmake.buildDirectory": "${workspaceFolder}/build","C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

.vscode/cmake-kits.json (可选)

[{"name": "GCC","compilers": {"C": "/usr/bin/gcc","CXX": "/usr/bin/g++"}},{"name": "Windows MSVC","visualStudio": "VisualStudio.16.2019","visualStudioArchitecture": "x64"}
]

5. 示例代码

src/MyFrame.h

#ifndef MY_FRAME_H
#define MY_FRAME_H#include <wx/wx.h>class MyFrame : public wxFrame {
public:MyFrame(const wxString& title);private:void OnHello(wxCommandEvent& event);void OnExit(wxCommandEvent& event);void OnAbout(wxCommandEvent& event);wxDECLARE_EVENT_TABLE();
};#endif

src/MyFrame.cpp

#include "MyFrame.h"wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)EVT_MENU(wxID_HELLO, MyFrame::OnHello)EVT_MENU(wxID_EXIT, MyFrame::OnExit)EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
wxEND_EVENT_TABLE()MyFrame::MyFrame(const wxString& title): wxFrame(nullptr, wxID_ANY, title)
{wxMenu *menuFile = new wxMenu;menuFile->Append(wxID_HELLO, "&Hello...\tCtrl-H","Help string shown in status bar for this menu item");menuFile->AppendSeparator();menuFile->Append(wxID_EXIT);wxMenu *menuHelp = new wxMenu;menuHelp->Append(wxID_ABOUT);wxMenuBar *menuBar = new wxMenuBar;menuBar->Append(menuFile, "&File");menuBar->Append(menuHelp, "&Help");SetMenuBar(menuBar);CreateStatusBar();SetStatusText("Welcome to wxWidgets!");
}void MyFrame::OnExit(wxCommandEvent& event)
{Close(true);
}void MyFrame::OnAbout(wxCommandEvent& event)
{wxMessageBox("This is a wxWidgets Hello World example","About Hello World", wxOK | wxICON_INFORMATION);
}void MyFrame::OnHello(wxCommandEvent& event)
{wxLogMessage("Hello world from wxWidgets!");
}

src/main.cpp

#include "MyFrame.h"class MyApp : public wxApp {
public:virtual bool OnInit() {MyFrame *frame = new MyFrame("Hello World");frame->Show(true);return true;}
};wxIMPLEMENT_APP(MyApp);

6. Windows 资源文件 (resources/app.rc)

#include "wx/msw/wx.rc"MyAppIcon ICON "app.ico"

7. 构建和运行

  1. 在 VS Code 中打开项目文件夹
  2. Ctrl+Shift+P 并选择 CMake: Configure
  3. 选择工具链(Windows 上选择 MSVC,Linux 上选择 GCC)
  4. Ctrl+Shift+P 并选择 CMake: Build
  5. F5 调试运行

8. 调试配置

.vscode/launch.json 中添加:

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

9. 常见问题解决

问题1: CMake 找不到 wxWidgets

  • 解决方案:确保正确设置了 wxWidgets_ROOT_DIR 或使用 vcpkg

问题2: 链接错误

  • 解决方案:检查 find_package 中是否包含了所有需要的组件

问题3: Windows 上显示控制台窗口

  • 解决方案:确保设置了 WIN32_EXECUTABLE TRUE

问题4: Linux 上外观不正确

  • 解决方案:确保安装了正确的 GTK 主题,并在 CMake 中指定 --toolkit=gtk3

通过以上步骤,你应该能够在 VS Code 中成功配置 wxWidgets 开发环境,并开始跨平台 GUI 应用程序的开发。

http://www.lqws.cn/news/210241.html

相关文章:

  • redis分片集群架构
  • 硬盘寻址全解析:从 CHS 三维迷宫到 LBA 线性王国
  • ​​Android 如何查看CPU架构?2025年主流架构有哪些?​
  • SAP 在 AI 与数据统一平台上的战略转向
  • Python从Excel读取数据并生成图表的方法详解
  • 限流算法java实现
  • 数组名作为函数参数详解 —— 指针退化及遍历应用示例
  • 【E9批量执行SQL】
  • SQL 基础入门
  • 手机端抓包大麦网抢票协议:实现自动抢票与支付
  • 免费 SecureCRT8.3下载、安装、注册、使用与设置
  • 六、Sqoop 导出
  • 交互标牌——视觉货币(数字)转换器项目及源码
  • 在ubuntu等linux系统上申请https证书
  • 多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
  • 使用ORM Bee (ormbee) ,如何利用SQLAlchemy的模型生成数据库表.
  • Python入门手册:异常处理
  • 【数据分析】探索婴儿年龄变化对微生物群落(呼吸道病毒和细菌病原体)结构的影响
  • Spring Boot 3.3 + MyBatis 基础教程:从入门到实践
  • 创建一个纯直线组成的字体库
  • 抖去推--短视频矩阵系统源码开发
  • model.classifier 通常指模型的分类头 是什么,详细举例说明在什么部位,发挥什么作用
  • 第二十六章 流程控制: case分支
  • 论文阅读:Matting by Generation
  • 26N60-ASEMI工业电机控制专用26N60
  • Xilinx FPGA MIPI DSI TX Subsystem 仿真笔记
  • JAVA学习 DAY3 注释与编码规范讲解
  • SOC-ESP32S3部分:33-声学前端模型ESP-SR
  • WSL文件如何上传到GitHub
  • MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪