You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Visual Studio 2017中创建基于CMake的Qt GUI项目

嘿,我来帮你理清这个纠结点!针对你的需求——要做跨Linux开发的Qt GUI应用,用CMake做构建系统——直接创建CMake项目再集成Qt是更顺畅的选择,比先建Qt GUI项目再转CMake要少很多麻烦。后者还要处理qmake到CMake的迁移,容易踩各种配置坑,完全没必要。下面是一步步的具体操作,跟着来就行:

步骤1:创建空白CMake项目
  • 打开VS2017,选「创建新项目」,搜索并选中「CMake项目」,给项目起个名字(比如MyQtCMakeApp),选好保存路径后创建。
  • 项目生成后会自带一个CMakeLists.txt和空的main.cpp,先把默认的main.cpp内容清空,后面我们要写Qt的代码。
步骤2:修改CMakeLists.txt集成Qt

这是核心环节,你需要把默认的CMakeLists.txt替换成以下配置(注释里有说明,记得根据自己的Qt版本调整路径):

cmake_minimum_required(VERSION 3.10)

# 定义项目名称和版本
project(MyQtCMakeApp VERSION 1.0 LANGUAGES CXX)

# 设置C++标准,Qt5推荐至少C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找Qt的核心组件,这里我们需要Core和Widgets,按需可加Gui、Network等
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)

# 开启Qt的自动生成工具:MOC(处理信号槽)、UIC(处理.ui文件)、RCC(处理资源文件)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# 添加你的源文件、.ui、.qrc等资源,有新文件直接加在这里
add_executable(MyQtCMakeApp
    main.cpp
    # 示例:如果有窗口文件可以加 mainwindow.cpp mainwindow.h mainwindow.ui
    # 示例:资源文件 resources.qrc
)

# 把Qt库链接到你的可执行文件
target_link_libraries(MyQtCMakeApp PRIVATE Qt5::Core Qt5::Widgets)
步骤3:编写基础Qt GUI代码

main.cpp里写入一个简单的Qt窗口代码,验证配置是否生效:

#include <QApplication>
#include <QWidget>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Qt + CMake in VS2017");
    QLabel label("Hello from Qt CMake App!", &window);
    label.move(50, 50);

    window.show();
    return app.exec();
}
步骤4:配置Qt环境(如果VS没自动识别)

如果VS找不到Qt的路径,需要手动指定:

  • 打开VS的「CMake」菜单,选择「Change CMake Settings」,打开CMakeSettings.json
  • 在对应的配置项(比如x64-Debug)里,找到environmentVariables,添加Qt的环境变量,示例如下:
    "environmentVariables": {
        "Qt5_DIR": "C:/Qt/5.15.2/msvc2017_64/lib/cmake/Qt5"
    }
    
    注意:这里的路径要替换成你自己安装的Qt版本对应的msvc2017_64目录(必须和VS2017的编译器匹配)。
步骤5:构建并运行
  • 点击VS工具栏的「生成」按钮,CMake会自动处理Qt的MOC等工具,完成编译。
  • 生成成功后点击「运行」,就能看到你的Qt窗口弹出来了!

为什么不推荐先建Qt GUI项目再转CMake?

默认的Qt VS插件生成的项目是基于qmake的,转CMake需要手动把.pro文件的配置迁移到CMakeLists.txt,还要处理路径、资源文件、自动工具的适配,很容易遗漏细节(比如Qt的信号槽自动生成逻辑)。而直接用CMake项目集成Qt,从一开始就用跨平台的CMake管理构建,后续到Linux开发时,只需要调整Qt的路径就能直接编译,完全符合你的需求。

内容的提问来源于stack exchange,提问作者minecraftplayer1234

火山引擎 最新活动