参考:Qt 编程指南

一个最小化工作示例:qt-minimal | GitHub

源文件

main.cpp

#include <QApplication>
#include <QLabel> int main(int argc, char *argv[]) {
QApplication app(argc, argv); QLabel label(QLabel::tr("Hello, Qt!"));
label.resize(200, 30);
label.setWindowTitle("First Qt App");
label.show(); return app.exec();
}

使用 QMake 构建 Qt 项目

创建一个 Qt 项目文件 (.pro 文件) :

qmake -project "QT+=widgets"

从 Qt 5 开始,QtWidgets 模块被从 QtGui 模块中分离且不会自动添加,因此这里手动添加 QtWidgets 模块。

该命令将扫描当前目录中的所有文件,然后生成对应的 .pro 文件。或者也可以手动创建一个:

MyQtProject.pro

QT += widgets

SOURCES += main.cpp

# 如果你有头文件或 UI 文件,也可以添加到这里。
# HEADERS += mainwindow.h
# FORMS += mainwindow.ui

通过 .pro 文件生成 Makefile:

qmake

通过 Makefile 编译项目:

make

参见:

使用 CMake 构建 Qt 项目

创建 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.16)

project(MyQtProject VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 REQUIRED COMPONENTS Widgets) qt_add_executable(MyQtProject main.cpp) target_link_libraries(MyQtProject PRIVATE Qt6::Widgets) set_target_properties(MyQtProject PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

生成和构建项目:

mkdir build && cd build
cmake ..
make

最终将生成 MyQtProject 可执行文件。

参见:

部署

使用 QMake 或 CMake 构建的 Qt 程序使用了 Qt 的动态链接库。为了使程序在没有安装 Qt 动态链接库的机器上也能运行,我们需要使用部署工具将这些动态链接库和程序一起打包发布。

Windows

CMake -static 编译 | CSDN

windeployqt MyQtProject.exe

在 Qt 6.5.0 上使用 windeployqt 会出现如下错误:

Cannot open .: Access is denied.

解决办法:

windeployqt --no-translations YOUR_QT_APP.exe

macOS

macdeployqt MyQtProject.app

Qt 项目在 MacOS 平台上面发布成可执行程序 .app | ifmet.cn

Troubleshooting

Could not find the Qt platform plugin "cocoa" in ""

解决方法:添加环境变量 QT_QPA_PLATFORM_PLUGIN_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH="/opt/homebrew/opt/qt/share/qt/plugins"

参考:Qt could not find the platform plugin cocoa | Stack Overflow

编译 Qt 项目的更多相关文章

  1. Windows下使用命令行编译Qt项目(解决DLL丢失问题)

    一.前言 我之前用Qt做了个hello world,结果各种报错,一大堆DLL找不到,今天用命令行编译就通过了 二.准备工作 1.Visual Studio(有nmake就行) 2.Qt 3.把qma ...

  2. 关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误

    用Cmake讲Qt.VTK和ITK整合后,打开解决方案后添加新类时运行会出现“n个无法解析的外部命令”的错误. 原因是新建的类未能生成moc文件,解决办法是: 1.右键 要生成moc文件的.h文件,打 ...

  3. Hello World程序演示Qt项目的建立、编译、运行和发布

    一.Qt项目的建立 1.选择项目模板. 选择"文件-->新建文件或工程",在选择模板页面选择Qt C++项目中的"Qt Gui应用"一项,然后单击&quo ...

  4. Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)

    仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...

  5. 【Qt】命令行编译Qt程序(nmake)【转】

    简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...

  6. Fedora15下搭建QT开发环境及编译QT

    看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...

  7. paip.c++ qt 项目工程互相引用的方法

    paip.c++ qt 项目工程互相引用的方法 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/ ...

  8. VS2008+Qt 项目目录

    1.项目开发环境:VS2008,QT4.7 2.项目的目录: 1)PETCT是解决方案名字 2)Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本. ...

  9. 4、树莓派的中文:安装ftp,安装gcc,安装qt,编译qt程序,运行qt界面程序

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装FTP:sudo apt-get install vsftpd 2.配置FTP,修改,/etc/vsftpd.conf # ...

  10. linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本 以及x64上编译qt

    最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...

随机推荐

  1. 化腐朽为神奇!揭开ISP图像处理的神秘面纱,基于瑞芯微RK3568J工业平台!

    ISP图像处理前后图像对比 化腐朽为神奇!经过ISP图像处理的图片前后对比是如此惊人!从下图中可以观察到,未经处理的原始图像偏绿且暗淡,而经ISP图像处理的图像能够清晰地还原现场真实的颜色细节! 图1 ...

  2. 写给rust初学者的教程(一):枚举、特征、实现、模式匹配

    这系列RUST教程一共三篇.这是第一篇,介绍RUST语言的入门概念,主要有enum\trait\impl\match等语言层面的东西. 安装好你的rust开发环境,用cargo创建一个空项目,咱们直接 ...

  3. SpringBoot学习备忘

    在 mapper.xml 中的 like 的写法 db1.name like "%"#{name}"%" 参考mybatis mapper.xml中like的写 ...

  4. 常回家看看之off_by_null(堆篇)

    上次介绍了堆里面的off_by_one,那么这个off_by_null和它有神马区别呢,哎,别看名字挺像,它俩无论是在栈里面还是堆里面都有很大区别的. off_by_one,这个我们知道可以通过溢出控 ...

  5. Java-Cookie客户端会话技术

    会话技术 会话:一次对话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cook ...

  6. Django 自带忘记密码,密码重置功能

    registration/password_reset_form.html: 重置密码表单模板 registration/password_reset_email.html: 发送重置密码邮件模板 r ...

  7. oeasy教您玩转vim - 39 - # 剪切粘贴

    ​ 剪切粘贴 回忆上节课内容 我们大幅度地复习了整个 motion: 直接运动 h j k l 行运动 首行g g 末行G 第n行n G 单词运动 wbe w 是到下一个 word 的开头 b 是到当 ...

  8. 第四章:springboot整合mybatis

    1,引入mybatis依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifact ...

  9. Java maven反应堆构建学习实践

    Java maven反应堆构建学习实践 实践环境 Apache Maven 3.0.5 (Red Hat 3.0.5-17) 应用示例 示例项目结构 maven示例项目组织结构如下 maven-stu ...

  10. 配置Sprig security后Post请求无法使用

    在学习过程中发现在配置完Spring security后,Post请求失效,无法增删改数据,这里可以通过在Spring Security 的Config类中增加 也可以自定义csrf,不过目前还不是很 ...