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

用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.xdnf.cn/news/12781.html

相关文章:

  • SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
  • 虚拟电厂发展三大趋势:市场化、技术主导、车网互联
  • Opencv查找图形形状的重要API讲解
  • springboot的test模块使用Autowired注入失败
  • 【storage】
  • 从认识AI开始-----AutoEncoder:生成模型的起点
  • axure制作数据列表并实现单选和多选以及鼠标滑动行hover
  • Vue3+Element Plus表单验证实战:从零实现用户管理
  • 音频剪辑软件少之又少好用
  • 在Vue或React项目中使用Tailwind CSS实现暗黑模式切换:从系统适配到手动控制
  • iOS 门店营收表格功能的实现
  • 初探Succinct Jagged稀疏多项式承诺方案
  • AI书签管理工具开发全记录(十五):TUI基本逻辑实现与数据展示
  • Kerberos面试内容整理-未来发展趋势
  • 第二十八课:深度学习及pytorch简介
  • LeetCode hot100---152.乘机最大子数组
  • 将大象装进冰箱里需要几步?- Edge AI模组的部署
  • AI大模型:(二)3.2 Llama-Factory微调训练deepseek-r1实践
  • AI大神吴恩达-提示词课程笔记
  • 《Vuejs设计与实现》第 8 章(挂载与更新)
  • 【氧化镓】HTFB应力对β - Ga2O3 SBD的影响
  • 【计算机网络】Linux下简单的TCP服务器(超详细)
  • 【精选】计算机毕业设计Python Flask海口天气数据分析可视化系统 气象数据采集处理 天气趋势图表展示 数据可视化平台源码+论文+PPT+讲解
  • 【Hugging Face】实践笔记:Pipeline任务、BERT嵌入层、Train任务、WandB解析
  • 【基础算法】枚举(普通枚举、二进制枚举)
  • 基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
  • 【Java学习笔记】包装类
  • STM32开发中,线程启动异常问题排查简述
  • Linux下VSCode开发环境配置(LSP)
  • Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志