通过命令行新建qt项目,并编译打包
ref: https://blog.csdn.net/weixin_42837024/article/details/81945656
新建项目
- 新建文件夹,作为项目根目录
- 编写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项目,并编译打包的更多相关文章
- Cordova之如何用命令行创建一个项目(完整示例)
原文:Cordova之如何用命令行创建一个项目(完整示例) 1. 创建cordova项目 (注意:当第一次创建或编译项目的时候,可能系统会自动下载一些东西,需要一些时间.) 在某个目录下创建cordo ...
- 使用MySQL命令行新建用户并授予权限的方法
MySQL命令行能否实现新建用户呢?答案无疑是肯定的.而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限. 首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的ro ...
- 命令行创建Maven项目卡住以及出错解决办法。
第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...
- 学习笔记-使用cmd命令行创建nodejs项目
使用cmd命令行创建nodejs项目 1)在DOS下cd 进入到你想要创建项目的路径. 2)mkdir sing (创建一个sing文件夹) 3)cd sing 4) npm init (初始化工程 ...
- 通过命令行创建Django项目
只有安装的是pycharm专业版才可以直接在pycharm面板中直接创建Django项目 如果不是专业版,可以通过命令行创建Django项目 https://www.cnblogs.com/jiare ...
- 用cmd命令行创建vue项目模板
1.进入cmd命令行 输入存放项目的位置 2.通过vue create 项目名称 创建项目 3.选择Manually select features 4.通过空格选中第1.2.5.6.7.去掉8 4. ...
- NodeJs命令行新建项目实例
安装Nodejs: 下载地址:http://nodejs.org/download/ 设置环境变量,例如我将nodejs装在D:/program文件夹下,则设以下为系统环境变量 D:\Program\ ...
- 命令行执行Qt程序
原文网址 //helloworld.cpp #include <QApplication> #include <QPushButton> int main(int argc,c ...
- 2019-7-3-如何通过命令行-msbuild-编译项目
title author date CreateTime categories 如何通过命令行 msbuild 编译项目 lindexi 2019-07-03 19:12:19 +0800 2019- ...
随机推荐
- 【2018.07.29】(深度优先搜索/回溯)学习DFS算法小记
参考网站:https://blog.csdn.net/ldx19980108/article/details/76324307 这个网站里有动态图给我们体现BFS和DFS的区别:https://www ...
- Tosca Connection Validation error:40 - Could not open a connection to SQL Server (不知道怎么解决)
谁知道下面这个错怎么解决,请给我留言,谢谢. 数据库能正常链接,服务也是 normal running
- 猎豹网校C++ Primer学习笔记2
14.数组 数组定义时的长度必须是在编译时就能确定的值. 全局数组会自动初始化为0. size_t 15.指针 其指向类型要相同. 指针和引用: 指针可以先不初始化,可以修改指向.有指针的指针. 16 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_16-课程预览功能开发-接口测试
cms和课程的微服务重启 从数据库内找一条数据 进入到了断点 拼装课程信息 ,然后进行远程调用 抛出异常 可能是开了两个cms服务的事,负载均衡 到了另外一个服务里面 ,关掉一个 把02关掉,重启cm ...
- (十六)集合框架(Collection和Map)和比较器(Comparable和comparator)
一.集合框架 1.1 为什么要使用集合框架? 当我们需要保持一组一样(类型相同)的元素的时候,我们应该使用一个容器来保存,数组就是这样一个容器. 那么,数组的缺点是什么呢? 数组一旦定义,长度将不能再 ...
- [CareerCup] Guards in a museum 博物馆的警卫
A museum was represented by a square matrix that was filled with O, G, and W where O represented ope ...
- list自定义排序工具类
工具类 package sort; import java.lang.reflect.Method; import java.text.Collator; import java.util.Compa ...
- Springboot 参数中传List
使用REST API时,经常会有get/delete方法需要传一个list的情况,如果使用post难免有点破坏规则,实际上参数传list是可以做到的 方法一: 后端代码如下: @DeleteMappi ...
- 【数据库开发】MySQL修改root密码
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...
- VS2010调试warning MSB8012:路径不匹配问题
VS2010调试warning MSB8012:路径不匹配问题 调试信息如下: warning MSB8012: TargetPath(D:\J2KCodecSDK\Samples\C++\a_Eas ...