Qt6使用cmake创建项目

news/2024/11/22 19:06:27/

       

目录

创建普通项目

创建qt项目

创建具有资源文件的qt项目


 

       在QT6中,官方推荐在新的项目中使用CMake。

        在Qt Creator中使用CMake构建系统时,与往常的qmake有一些不一样,因此写一篇文章来记录一下。

创建普通项目

我们先写一个最简单的项目

//main.cpp
#include <iostream>
using namespace std;int main(int argc,char *argv[])
{cout<<"test cmake qt"<<endl; return 0; 
}

然后再创建一个CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(qt_cmake)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 编译执行程序
add_executable(${PROJECT_NAME} 
main.cpp
)

  cmake_minimum_required()指定应用程序所需的最低 CMake 版本。Qt本身至少需要CMake版本3.16。如果您使用静态构建的Qt - 默认为和 - 则需要CMake 3.21.1或更高版本。

  project()设置项目名称和默认项目版本。该参数告诉 CMake 该程序是用C++编写的。

     Qt 6 需要支持 C++ 版本 17 或更高版本的编译器。通过设置 、 变量来强制实施此操作,如果编译器太旧,CMake 将打印错误。CMAKE_CXX_STANDARDCMAKE_CXX_STANDARD_REQUIRED。

     告诉 CMake 我们要构建一个作为目标的可执行文件(所以不是库)。它是内置命令的包装器,并提供额外的逻辑来自动处理静态Qt构建中的Qt插件链接,特定于平台的库名称自定义等。helloworldadd_executable()

  然后使用cmake -S . -B build命令生成出工程文件。

       在使用cmake --build build 编译出执行程序。

最后的执行效果 。

创建qt项目

首先创建一个最简单的窗口

#include <iostream>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
using namespace std;int main(int argc,char *argv[])
{cout<<"test cmake qt"<<endl;QApplication a(argc,argv);QMainWindow w;w.show();return a.exec();   
}

CMakeLists.txt文件

cmake_minimum_required(VERSION 3.20)
project(qt_cmake)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 自动把ui转化成ui代码
# uic mainwindow.ui > ui_mainwindow.h
set(CMAKE_AUTOUIC ON)
# 自动生产资源文件代码 rcc > .h
set(CMAKE_AUTORCC ON)
# 自动生成信号槽代码
set(CMAKE_AUTOMOC ON)# 导入QT的库
find_package(Qt6 COMPONENTS Widgets REQUIRED)# 指定qt依赖库和头文件路径# 编译执行程序
add_executable(${PROJECT_NAME} 
main.cpp
)target_link_libraries(${PROJECT_NAME}
Qt6::Widgets
)

这边需要链接到qt的库,所以使用的命令最好是从外部指定安装qt的路径

例如我这边的就是cmake -S . -B build -DQt6_DIR=F:/Qt/6.4.3/msvc2019_64/lib/cmake/Qt6

然后再执行cmake --build build

这边需要注意的是直接运行可能会因为缺少动态库而失败。我目前的处理方法是指定环境变量的方法。

 

不过这样可能会污染环境,也可以使用qt的 windeployqt.exe 工具自动复制依赖的动态库。

在执行目录下执行命令qt安装路径+windeployqt.exe

F:\Qt\6.4.3\msvc2019_64\bin\windeployqt.exe

创建具有资源文件的qt项目

qt项目可以从vs中自己创建

这边提供CMakeLists.txt文件

cmake_minimum_required(VERSION 3.20)
project(qt_cmake)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 自动把ui转化成ui代码
# uic mainwindow.ui > ui_mainwindow.h
set(CMAKE_AUTOUIC ON)
# 自动生产资源文件代码 rcc > .h
set(CMAKE_AUTORCC ON)
# 自动生成信号槽代码
set(CMAKE_AUTOMOC ON)# 导入QT的库
find_package(Qt6 COMPONENTS Widgets REQUIRED)# 指定qt依赖库和头文件路径# 编译执行程序
add_executable(${PROJECT_NAME} 
main.cpp
mainwindow.ui 
mainwindow.cpp
mainwindow.h
mainwindow.qrc
)#cmake -S . -B build -DQt6_DIR=F:/Qt/6.4.3/msvc2019_64/lib/cmake/Qt6
target_link_libraries(${PROJECT_NAME}
Qt6::Widgets
)# 自动复制依赖的动态库 windeployqt.exe

 


http://www.ppmy.cn/news/287388.html

相关文章

天天酷跑1.0.10.0破解版ios 小安苹果iPhone版

天天酷跑是目前网络上最好玩的手机跑酷游戏&#xff0c;破解版也很多&#xff0c;但针对ios系统的破解版本却非常少。所以小编此次为广大网友带来了天天酷跑小安破解版ios版供网友下载&#xff0c;已经成功去掉了地刺、怪物、导弹等障碍物&#xff0c;可以完美运行在iphone/ipa…

第21,22,23天 咳咳

额。。好像之前忘记继续写啦。。于是&#xff0c;就这样断了一天&#xff0c;然后后来想补下的&#xff0c;结果发现。。。。csdn不能上了。。 这几天还不错吧&#xff0c;就是更多发现自己不足&#xff0c;代码实现差。。然后手速慢。。然后思维差。。嗯。。。你还有什么优点吗…

gg修改器偏移量修改_GG修改器偏移是怎么弄 | 手游网游页游攻略大全

发布时间:2017-12-22 1.9高效机场详解 教你怎么做机场.今天给大家分享的就是我的世界1.9版本中初阶段高效机场的设计分析,那想要制作机场的玩家不妨进来看看下面的心得哦!希望对大家有所帮助. 游戏园我的世界官方群: 325049520 游戏园 ... 标签: 我的世界 游戏攻略 发布时间:…

android脚本精灵miui,脚本精灵安卓apk下载

手游标签: 脚本精灵 脚本精灵是手机游戏玩家的必备辅助工具&#xff0c; 是模拟手机触摸和按键的软件&#xff0c;通过这款工具&#xff0c;运行各种功能的手机脚本&#xff0c;代替玩家进行的重复操作。可以自己录制脚本或者运行各种自定义脚本&#xff0c;从而代替你在手机上…

android微信被隐藏,五种微信隐藏技术,只能通过教程在Android上与微信一起使用...

下载并安装Warcraft Century Computer Edition教程 一个. 游戏简介《魔兽世界》是一款即时移动游戏&#xff0c;该游戏具有丰富的游戏玩法&#xff0c;装备创作&#xff0c;特殊副本等&#xff0c;可以在游戏中体验到&#xff0c;并且有各种各样的宠物在等您驯养. 游戏背景上帝…

酷跑 - 叉叉、葫芦侠

【2014】酷跑最新方法&#xff0c;今日亲测百万成功 http://tieba.baidu.com/p/2796550633 【2014】最新方法&#xff0c;今日亲测百万成功 http://tieba.baidu.com/p/2796475915 关于看我贴跑分还失败最后说明 http://tieba.baidu.com/p/2798727866 总分&#xff1d;&#xff…

天天酷跑不同阶段的难点解析

虽然现在有很多的刷分、刷金币的工具&#xff0c;但是如果玩家想要知道自己的真正实力&#xff0c;还是靠自己的本事比较好。现在&#xff0c;在各大安卓手机动作冒险游戏下载平台上都能看到这样的一款游戏——天天酷跑&#xff0c;想要在酷跑中获得好成绩&#xff0c;就要知道…

力扣高频SQL50题(基础版)——第九天

力扣高频SQL50题(基础版)——第九天 1 销售分析Ⅲ 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 1.2 示例sql语句 # 找到不在春季销售的产品 然后不是这些的就是符合条件的 # QUARTER 返回日期是第几季度的 SELECT product_id,product_name F…