ref: https://blog.csdn.net/weixin_42837024/article/details/81945656


平台    :Ubuntu 18.04
QT版本    :5.9.1 (open source)
g++     : 7.3.0
arm-gcc   :4.8.1
 

新建项目

  • 新建文件夹,作为项目根目录
  • 编写main.cpp
    main.cpp
#include<QApplication>
#include<QWidget>
int main(int argc,char ** argv)
{
QApplication app(argc,argv);
QWidget* pWidget = new QWidget();
pWidget->show();
return app.exec(); }
  • 进入到相应的 文件夹下 输入qmake -project 会发现文件夹下生成了平台无关的项目文件一个XXX.pro文件(前面和文件夹名字一样)

    • qmake -project

  • 下一步输入 qmake XXX.pro 你要输入对应的pro文件

    • qmake XXX.pro
    • 生成一些 makefile 文件 和 debug 和 release 文件夹(因为手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码

编译

如果使用的是开源版的Qt,用make;如果是商业版的Qt,用nmake

  • 所以我输入make,会 报错 不要着急

因为我们用到了QWidget 所以要在pro文件里加入 QT += widgets 然后继续重复上一步

  • 重新make

    •   make

效果如图

打包

不同平台下的打包方式还不太一样。但是原理是类似的,都是将 应用文件依赖的有关库放到同级目录下

  • Windows

    • 输入命令  windeployqt XXX.exe
    • 可以再使用  Enigma Virtual Box 将文件都打包在一起
  • Linux

1.将编译后生成的可执行程序(如:test)复制到一个空目录下

2.使用ldd命令查看和导出需要的库

在步骤1的目录下新建一个pack.sh文件,文件内容如下:

#    pack.sh
# SCHIPS
# schips@dingtalk.com
# https://gitee.com/schips/
# Wed Jun :: AM HKT
##
#!/bin/zsh #你需要发布的程序名称
bin="test_project" # 输出路径
des="./"
deplist=$(ldd $bin | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des

即可

 

通过命令行新建qt项目,并编译打包的更多相关文章

  1. Cordova之如何用命令行创建一个项目(完整示例)

    原文:Cordova之如何用命令行创建一个项目(完整示例) 1. 创建cordova项目 (注意:当第一次创建或编译项目的时候,可能系统会自动下载一些东西,需要一些时间.) 在某个目录下创建cordo ...

  2. 使用MySQL命令行新建用户并授予权限的方法

    MySQL命令行能否实现新建用户呢?答案无疑是肯定的.而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限. 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的ro ...

  3. 命令行创建Maven项目卡住以及出错解决办法。

    第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...

  4. 学习笔记-使用cmd命令行创建nodejs项目

    使用cmd命令行创建nodejs项目 1)在DOS下cd 进入到你想要创建项目的路径. 2)mkdir sing (创建一个sing文件夹) 3)cd sing  4) npm init (初始化工程 ...

  5. 通过命令行创建Django项目

    只有安装的是pycharm专业版才可以直接在pycharm面板中直接创建Django项目 如果不是专业版,可以通过命令行创建Django项目 https://www.cnblogs.com/jiare ...

  6. 用cmd命令行创建vue项目模板

    1.进入cmd命令行 输入存放项目的位置 2.通过vue create 项目名称 创建项目 3.选择Manually select features 4.通过空格选中第1.2.5.6.7.去掉8 4. ...

  7. NodeJs命令行新建项目实例

    安装Nodejs: 下载地址:http://nodejs.org/download/ 设置环境变量,例如我将nodejs装在D:/program文件夹下,则设以下为系统环境变量 D:\Program\ ...

  8. 命令行执行Qt程序

    原文网址 //helloworld.cpp #include <QApplication> #include <QPushButton> int main(int argc,c ...

  9. 2019-7-3-如何通过命令行-msbuild-编译项目

    title author date CreateTime categories 如何通过命令行 msbuild 编译项目 lindexi 2019-07-03 19:12:19 +0800 2019- ...

随机推荐

  1. Sollin算法的C++实现 BY gremount

    Sollin算法可以看作是Kruskal算法和Prim算法的综合 基本思想是: 1. 从所有节点都孤立的森林开始,通过合并树来得到最小生成树 2. 每次合并树的边都是用最小权重的割边 程序具体实现思路 ...

  2. Alpha项目冲刺! Day3-产出

    各个成员今日完成的任务 林恩:任务分工,博客撰写,完善设置等模块 杨长元:安卓本地数据库基本建立 李震:完成注册页面 胡彤:完善服务端 寇永明:画图,学习 王浩:画图,学习 李杰:画图,学习 各个成员 ...

  3. WebSocketSharp中WebSocket类

    websocket-sharp.clone, Version=1.0.2.39869 WebSocket由方法调用事件改为实例化委托调用,两种构造 1.构造函数 第一种 // // 摘要: // In ...

  4. window.postMessage 跨窗口,跨iframe javascript 通信

    同源通信 执行它们的页面位于具有相同的协议(http/https),端口(80/443),主机(通常为域名) 时,这两个脚本才能相互通信 大多数情况下,网站就是内部的域名,所以是同源通信,可以相互访问 ...

  5. linux tcp 高并发最大连接数

    Linux下高并发socket最大连接数所受的限制问题 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统 ...

  6. oracle的表分区

    (1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.   分区表: 当表中的数据量不断增大,查询数据的速度就 ...

  7. mysql中的sql-mode导致的datetime类型字段不能为0000

    问题描述: 在执行建表语句的时候,出现invalid default datetime value '0000-00-00 00:00:00',从字面意思看,就是不合法的默认值'0000-00-00 ...

  8. VMware与宿主机同一网段

    将VMware做为一个物理的虚拟机,设置网段与宿主机在同一子网.

  9. nginx指定允许的IP访问

    接下来我们将tomcat.i4t.com 也就是10.4.82.140进行配置权限 #只允许10.4.82.142访问 cat /usr/local/nginx/conf/nginx.conf use ...

  10. 【转载】 自动化机器学习(AutoML)之自动贝叶斯调参

    原文地址: https://blog.csdn.net/linxid/article/details/81189154 ---------------------------------------- ...