用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. 构建和运行
- 在 VS Code 中打开项目文件夹
- 按
Ctrl+Shift+P
并选择CMake: Configure
- 选择工具链(Windows 上选择 MSVC,Linux 上选择 GCC)
- 按
Ctrl+Shift+P
并选择CMake: Build
- 按
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 应用程序的开发。