参考: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. 全国产!瑞芯微RK3568J/RK3568B2工业核心板规格书

    核心板简介 创龙科技SOM-TL3568是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55全国产工业核心板,每核主频高达1.8GHz/2.0GHz.核心板CP ...

  2. 专用M4F+四核A53,异构多核AM62x让工业控制“更实时、更安全” Tronlong创龙科技5 秒前 1 德州仪器 TI芯片

    Cortex-M4F + Cortex-A53异构多核给工业控制带来何种意义? 创龙科技SOM-TL62x工业核心板搭载TI AM62x最新处理器,因其Cortex-M4F + Cortex-A53异 ...

  3. 基于Bootstrap Blazor开源的.NET通用后台权限管理系统

    前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑.平板.手机等所有主流设备),可切换至 Bl ...

  4. ABP框架开发实例教程-获取前端样式和脚本

    1.运行生成的ABP框架,设置WEB.MVC项目为启动项目,点击开始运行,界面如下,样式和脚本文件不存在,所以导致界面无法正常显示,这个我研究ABP遇到的第二个坑,第一个坑是生成数据库. 2.为什么没 ...

  5. Python入门学习介绍

    什么是Python? Python它是一种直译式,面向对象,解释式的脚本语言.它和Java,C/C++,Go语言一样都是高级语言,但由于它是解释式语言,所以运行速度会比Java,C/C++等语言慢(虽 ...

  6. 谈谈你对MVVM开发模式和MVT的理解?

    MVVM分为Model.View.ViewModel三者. Model 代表数据模型,数据和业务逻辑都在Model层中定义: View 代表UI视图,负责数据的展示: ViewModel 负责监听 M ...

  7. Vue3 如何接入 i18n 实现国际化多语言

    1. 基本方法 在 Vue.js 3 中实现网页的国际化多语言,最常用的包是 vue-i18n,通常我们会与 vue-i18n-routing 一起使用. vue-i18n 负责根据当前页面的语言渲染 ...

  8. 在Eclipse中使用Project Explorer视图与Package Explorer视图

    1.在项目文件比较多的情况下,为了方便查看整体和及时定位到项目文件,通常会同时使用Project Explorer视图与Package Explorer视图. 2.打开Project Explorer ...

  9. 最佳 AI 翻译工作流:全世界最信达雅的翻译

    吴恩达老师提出了一种反思翻译的大语言模型 (LLM) AI 翻译工作流程--GitHub - andrewyng/translation-agent,具体工作流程如下: 提示一个 LLM 将文本从 s ...

  10. CF1988C Increasing Sequence with Fixed OR Solution

    题意简述如下: 给定一个正整数 \(n\),请构造一个正整数序列使其满足以下条件并尽可能长:这个序列中每个数都大于等于 \(1\) 且小于等于\(n\):这个序列是单调递增的:这个序列中任意两个相邻的 ...