当前位置: 首页 > 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 应用程序的开发。

相关文章:

  • PDF转PPT转换方法总结
  • 低功耗MQTT物联网架构Java实现揭秘
  • 【区块链基础】区块链的 Fork(分叉)深度解析:原理、类型、历史案例及共识机制的影响
  • grep、wc 与管道符快速上手指南
  • PDF图片和表格等信息提取开源项目
  • Svelte 核心语法详解:Vue/React 开发者如何快速上手?
  • Linux 系统中的算法技巧与性能优化
  • 【R语言编程——数据调用】
  • 【工具教程】PDF电子发票提取明细导出Excel表格,OFD电子发票行程单提取保存表格,具体操作流程
  • 虚幻引擎5-Unreal Engine笔记之SET节点的输出引脚获取设置后的最新变量值
  • 使用Conda管理服务器多版本Python环境的完整指南
  • 【Java学习笔记】String类总结
  • 【计算机网络】Linux下简单的TCP服务器(超详细)
  • 【Java学习笔记】Math方法
  • curl 如何发送一个邮件 ?
  • chili3d 笔记17 c++ 编译hlr 带隐藏线工程图
  • [TI板]MSPM0G3507学习笔记(一) 超详细keil环境配置+烧录配置+空工程迁移+vscode配置+点灯
  • “组件、路由懒加载”,在 Vue3 和 React 中分别如何实现? (copy)
  • 嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
  • 浅谈 React Hooks
  • 带注册登录的网站模板/免费优化
  • 在网站做博客/网站统计分析工具的主要功能
  • 互动交流平台/兰州seo关键词优化
  • 浙江省住房城乡建设厅官方网站/桂林网页
  • 网站预算/磁力搜索引擎torrentkitty
  • 嘉兴网站建设推广/如何提升百度关键词排名