使用 *.prf 文件自动安装依赖

Qt\Qt5.9.5\5.9.5\msvc2015\mkspecs\features 路径中添加 auto_install.prf 文件

然后在程序配置文件(*.pro)中添加

CONFIG += auto_install

程序编译完成时,则会自动执行 auto_install.prf 文件中的内容,这样避免了每次都要写配置文件的麻烦

auto_install.prf 文件内容如下:

# 自动复制依赖

CONFIG(debug,debug | release){
QT_BIN_FILES += \
$$[QT_INSTALL_BINS]/Qt5Cored.dll \
$$[QT_INSTALL_BINS]/Qt5Guid.dll \
$$[QT_INSTALL_BINS]/Qt5Widgetsd.dll \
$$[QT_INSTALL_BINS]/Qt5Networkd.dll \
$$[QT_INSTALL_BINS]/Qt5Sqld.dll
QT_BIN_PATH = $$OUT_PWD/debug/
win32 {
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c copy /y $$shell_path($$var) $$shell_path($$QT_BIN_PATH) $$escape_expand(\\n\\t))
}
}
unix {
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cp $$var $$QT_BIN_PATH $$escape_expand(\\n\\t))
}
}
QT_PLATFORMS_BIN_FILES += \
$$[QT_INSTALL_PLUGINS]/platforms/qwindowsd.dll
QT_PLATFORMS_BIN_PATH = $$OUT_PWD/debug/platforms/
win32 {
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c xcopy /y $$shell_path($$var) $$shell_path($$QT_PLATFORMS_BIN_PATH) $$escape_expand(\\n\\t))
}
}
unix {
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cp $$var $$QT_PLATFORMS_BIN_PATH $$escape_expand(\\n\\t))
}
}
}else{
QT_BIN_FILES += \
$$[QT_INSTALL_BINS]/Qt5Core.dll \
$$[QT_INSTALL_BINS]/Qt5Gui.dll \
$$[QT_INSTALL_BINS]/Qt5Widgets.dll \
$$[QT_INSTALL_BINS]/Qt5Network.dll \
$$[QT_INSTALL_BINS]/Qt5Sql.dll
QT_BIN_PATH = $$OUT_PWD/release/
win32 {
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c copy /y $$shell_path($$var) $$shell_path($$QT_BIN_PATH) $$escape_expand(\\n\\t))
}
}
unix {
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cp $$var $$QT_BIN_PATH $$escape_expand(\\n\\t))
}
}
QT_PLATFORMS_BIN_FILES += \
$$[QT_INSTALL_PLUGINS]/platforms/qwindows.dll
QT_PLATFORMS_BIN_PATH = $$OUT_PWD/release/platforms/
win32 {
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c xcopy /y $$shell_path($$var) $$shell_path($$QT_PLATFORMS_BIN_PATH) $$escape_expand(\\n\\t))
}
}
unix {
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cp $$var $$QT_PLATFORMS_BIN_PATH $$escape_expand(\\n\\t))
}
}
} #export(QMAKE_POST_LINK)

jom.exe INSTALL

    CONFIG(debug,debug | release){
QT_CORE.path = $$OUT_PWD/debug/
QT_CORE.files = $$[QT_INSTALL_BINS]/Qt5Cored.dll QT_GUI.path = $$OUT_PWD/debug/
QT_GUI.files = $$[QT_INSTALL_BINS]/Qt5Guid.dll QT_WIDGETS.path = $$OUT_PWD/debug/
QT_WIDGETS.files = $$[QT_INSTALL_BINS]/Qt5Widgetsd.dll QT_NETWORK.path = $$OUT_PWD/debug/
QT_NETWORK.files = $$[QT_INSTALL_BINS]/Qt5Networkd.dll QT_PLATFORMS.path = $$OUT_PWD/debug/platforms/
QT_PLATFORMS.files = $$[QT_INSTALL_PLUGINS]/platforms/qwindowsd.dll
}else{
QT_CORE.path = $$OUT_PWD/release/
QT_CORE.files = $$[QT_INSTALL_BINS]/Qt5Core.dll QT_GUI.path = $$OUT_PWD/release/
QT_GUI.files = $$[QT_INSTALL_BINS]/Qt5Gui.dll QT_WIDGETS.path = $$OUT_PWD/release/
QT_WIDGETS.files = $$[QT_INSTALL_BINS]/Qt5Widgets.dll QT_NETWORK.path = $$OUT_PWD/release/
QT_NETWORK.files = $$[QT_INSTALL_BINS]/Qt5Networkd.dll QT_PLATFORMS.path = $$OUT_PWD/release/platforms/
QT_PLATFORMS.files = $$[QT_INSTALL_PLUGINS]/platforms/qwindows.dll
}
INSTALLS += QT_CORE QT_GUI QT_WIDGETS QT_NETWORK QT_PLATFORMS
win32 {
CONFIG(debug,debug | release){
QT_BIN_FILES += \
$$[QT_INSTALL_BINS]/Qt5Cored.dll \
$$[QT_INSTALL_BINS]/Qt5Guid.dll \
$$[QT_INSTALL_BINS]/Qt5Widgetsd.dll \
$$[QT_INSTALL_BINS]/Qt5Networkd.dll
QT_BIN_PATH = $$OUT_PWD/debug/
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c copy /y $$shell_path($$var) $$shell_path($$QT_BIN_PATH) $$escape_expand(\\n\\t))
} QT_PLATFORMS_BIN_FILES += \
$$[QT_INSTALL_PLUGINS]/platforms/qwindowsd.dll
QT_PLATFORMS_BIN_PATH = $$OUT_PWD/debug/platforms/
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c xcopy /y $$shell_path($$var) $$shell_path($$QT_PLATFORMS_BIN_PATH) $$escape_expand(\\n\\t))
}
}else{
QT_BIN_FILES += \
$$[QT_INSTALL_BINS]/Qt5Core.dll \
$$[QT_INSTALL_BINS]/Qt5Gui.dll \
$$[QT_INSTALL_BINS]/Qt5Widgets.dll \
$$[QT_INSTALL_BINS]/Qt5Network.dll
QT_BIN_PATH = $$OUT_PWD/release
for(var, QT_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c copy /y $$shell_path($$var) $$shell_path($$QT_BIN_PATH) $$escape_expand(\\n\\t))
} QT_PLATFORMS_BIN_FILES += \
$$[QT_INSTALL_PLUGINS]/platforms/qwindows.dll
QT_PLATFORMS_BIN_PATH = $$OUT_PWD/release/platforms
for(var, QT_PLATFORMS_BIN_FILES) {
QMAKE_POST_LINK += $$quote(cmd /c xcopy /y $$shell_path($$var) $$shell_path($$QT_PLATFORMS_BIN_PATH) $$escape_expand(\\n\\t))
}
}
# 详细使用请查看 qt file_copies.prf 文件
#CONFIG *= file_copies #创建名称以描述要复制的文件:
#COPIES += DocCopyDemo #在.files成员中列出要复制的文件:
#DocCopyDemo.files = $$files($$PWD/*.pro) #在.path成员中指定目标路径:
#DocCopyDemo.path = $$OUT_PWD/debug #(可选)指定要从源路径修剪的基本路径:
#DocCopyDemo.base = $$PWD/

Qt 如何自动安装常用依赖?的更多相关文章

  1. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题

    在初次运行带有matplotlib包的程序时,被告知了缺少模块(如标题所示).搜索调查后发现在自己安装的python中确实缺少此安装包,接下来,进行了下载.安装.运行,又少了一个模块,再下载.再运行, ...

  2. 【Azure 批处理 Azure Batch】在Azure Batch中如何通过开始任务自动安装第三方依赖的一些软件(Windows环境)

    准备条件 Azure Batch账号 需要安装的软件包(zip)文件,里面包含该软件的msi安装文件, 此处使用python.msi 版本 3.3.3 作为例子(https://www.python. ...

  3. Windows批处理:自动部署常用软件(静默安装)

    一.简介 最近一直在测试使用域组策略自动部署软件,效果并不理想.首先,主机必须加入域才能让策略生效.其实是Windows Server 2012 R2只支持.msi格式的安装包,所以部署前需将软件重新 ...

  4. ubuntu桌面安装常用软件&及常见问题

    自己从windows转向ubuntu桌面开发,根据需求安装以下文件: ubuntu 桌面版下载:http://www.ubuntu.org.cn/download/desktop 有的公司设置静态ip ...

  5. centos 下 Qt Creator 的安装使用

    centos 下 Qt Creator 的安装使用 Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐.Qt Creator 是 ...

  6. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  7. Linux中yum手动安装、手动建立仓库文件夹关联实现关联包自动安装、yum相关命令使用

               yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指 ...

  8. PXE+kickstart自动安装ubuntu14.04

    本文参考了诸多文章,先感谢这些文章的作者. 使用pxe安装系统需要安装dhcp,tftp,http等服务(当然也可以使用其他文件共享方式比如nfs,ftp). 实验环境: 1. vmware 12 2 ...

  9. 如何正确的使用Ubuntu以及安装常用的渗透工具集.

    文章来源i春秋 入坑Ubuntu半年多了  记得一开始学的时候基本一星期重装三四次=-= 尴尬了 觉得自己差不多可以的时候 就吧Windows10干掉了 c盘装Ubuntu 专心学习.   这里主要来 ...

随机推荐

  1. MVC & Entity Framework(2)- controller、Models单独DLL

    继上一篇MVC & Entity Framework(1)- 开发环境之后,已经很久没更新了.接下来记录一下怎么把MVC中的controller单独拆为一个类库,然后在web项目中引用.另外, ...

  2. 个人的Linux实用命令

    Linux下的命令有那么多,我不可能也不想去把每一个都记住,列举一些自己工作中很实用的命令,这些命令或许不是很常用,但是有时候却离不了. 1.网络方面 service iptables start/s ...

  3. 循环节计算---用到find函数

    #include <iostream> #include <algorithm> #include <vector> using namespace std; in ...

  4. Sqlserver 批量数据更改

    insert into AAA select GETDATE(),name from BBB where aid=0 update a set a = b.a,b=b.b,c=b.c from t a ...

  5. Node.js 配置Nginx

    1.修改nginx.conf upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64; } serv ...

  6. U盘工作原理(转)

    u盘工作原理 一. U盘基本工作原理 通用串行总线(Universal serial Bus)是一种快速灵活的接口, 当一个USB设备插入主机时,由于USB设备硬件本身的原因,它会使USB总线的数据信 ...

  7. 14 javaBean 组件

    bean类不应该有公开的实例变量. 持续性的值应该通过 getXxx 和 setXxx 方法访问. <jsp: useBean id=”beanName” class=”package.Clas ...

  8. JS 怎么刷新当前页面

    reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页 ...

  9. Sql Server根据表名生成查询的存储过程(查询条件可选)

    static void Main(string[] args) { string 表名 = "water_emstime"; string sql = "exec Get ...

  10. 用n(0)次求一个数组里面最大子数组的和(数组可以输入负数)

    今天老师布置了题目上的任务,可谓是杀死人脑细胞不偿命呐... 在课上叽叽咕咕的讨论了一节课也没有答案,只得出几个备选方案,一个是通过枚举法将数组里面的子数组和一个个列出来然后在进行比较,可想而知(n2 ...