编译 Qt 项目
参考: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
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 项目的更多相关文章
- Windows下使用命令行编译Qt项目(解决DLL丢失问题)
一.前言 我之前用Qt做了个hello world,结果各种报错,一大堆DLL找不到,今天用命令行编译就通过了 二.准备工作 1.Visual Studio(有nmake就行) 2.Qt 3.把qma ...
- 关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误
用Cmake讲Qt.VTK和ITK整合后,打开解决方案后添加新类时运行会出现“n个无法解析的外部命令”的错误. 原因是新建的类未能生成moc文件,解决办法是: 1.右键 要生成moc文件的.h文件,打 ...
- Hello World程序演示Qt项目的建立、编译、运行和发布
一.Qt项目的建立 1.选择项目模板. 选择"文件-->新建文件或工程",在选择模板页面选择Qt C++项目中的"Qt Gui应用"一项,然后单击&quo ...
- Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)
仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...
- 【Qt】命令行编译Qt程序(nmake)【转】
简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...
- Fedora15下搭建QT开发环境及编译QT
看了不少linux上编译qt的文章,实际上直接通过yum 安装qt是最方便的,请参考<yum安装qt> 不过初步接触fedora,为了了解一下如何在linux上编译.安装开源代码,所以必须 ...
- paip.c++ qt 项目工程互相引用的方法
paip.c++ qt 项目工程互相引用的方法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/ ...
- VS2008+Qt 项目目录
1.项目开发环境:VS2008,QT4.7 2.项目的目录: 1)PETCT是解决方案名字 2)Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本. ...
- 4、树莓派的中文:安装ftp,安装gcc,安装qt,编译qt程序,运行qt界面程序
本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装FTP:sudo apt-get install vsftpd 2.配置FTP,修改,/etc/vsftpd.conf # ...
- 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 ...
随机推荐
- arm linux 移植 ffmpeg 库 + x264 + x265
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- 使用定时器:在logs目录,每两分钟产生一个文件
1.使用定时器:在logs目录,每两分钟产生一个文件(文件格式为:201711151323.log.201711151323.log.2017111513xx.log ...思路:定时器定时调用she ...
- 使用bootstrap-select 动态加载数据不显示的问题,级联数据置为空
动态加载数据 $.showLoading('数据加载中');//开启遮挡层 $.ajax({ url: "/PickoutStock/GetSendReceive", data: ...
- 使用post请求登陆
1.使用post请求登陆 import requests import matplotlib.pyplot as plt url = 'https://www.ptpress.com.cn/login ...
- go语言的基础语法
字符串数组 package main import ( "fmt" ) func main() { var str string str = "hello world&q ...
- 创建数据库时排序规则utf8_general_ci与utf8_bin的区别
在MySQL数据库中,字符集(如utf8)定义了字符如何存储,而排序规则(Collation)则定义了字符如何比较.排序和区分大小写.utf8_general_ci和utf8_bin是两种常用的UTF ...
- 基于django(爱抚宠物) 小程序设计和实现(源码+LW+部署讲解)
感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用 ...
- [oeasy]python0071_字符串类型_str_string_下标运算符_中括号
回忆上次内容 上次 分辨了 静态类型 语言 动态类型 语言 python 属于 对类型要求 没有那么严格的 动态类型 语言 对 初学者很友好 不过很多时候 也容易 弄不清变量类型 直接 修 ...
- [oeasy]python0070_ 字体样式_下划线_中划线_闪动效果_反相_取消效果
字体样式 回忆上次内容 m 可以改变字体样式 0-10 之间设置的都是字体效果 0 复原 1 变亮 2 变暗 从3到10 又是什么效果 呢?? 真的可以blink闪烁吗? 3m 3m 实现斜体字的效果 ...
- AT_abc180_d 题解
洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 现有 \(STR\) 和 \(EXP\) 两个变量,初始化分别为 \(X\) 和 \( ...