使用qmake编译时拷贝文件
使用qmake构建项目时,需要在make时拷贝一些文件到指定位置,非执行make install,下面总结列举一下我了解的方式
COPIES
示例pro
- 1 COPY_DIR = $$PWD/copys
- 2
- 3 cp_kk.files += \
- 4 aaa \
- 5 bbb
- 6
- 7 cp_kk.path += $$INSTALL_DIR/copys
- 8
- 9 COPIES += cp_kk
执行qmake后查看Makefile文件
- COPY = cp -f
- COPY_FILE = cp -f
- COPY_DIR = cp -f -R
- distdir: FORCE
- @test -d $(DISTDIR) || mkdir -p $(DISTDIR)
- $(COPY_FILE) --parents $(DIST) $(DISTDIR)/
- $(COPY_FILE) --parents /home/XXX/Qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
- $(COPY_FILE) --parents main.cpp $(DISTDIR)/
- $(COPY_FILE) --parents aaa bbb $(DISTDIR)/
compiler_copy_cp_kk_make_all: copys/aaa copys/bbb
copys/aaa: aaa
$(QINSTALL) aaa copys/aaa
copys/bbb: bbb
$(QINSTALL) bbb copys/bbb
另外执行完qmake之后就可以看到创建了copys目录,但是在make前目录是空的。make之后,文件aaa和bbb被拷贝过来了。
QMAKE_PRE_LINK和QMAKE_POST_LINK
示例pro
- PRE_DIR = $$PWD/pre
- QMAKE_PRE_LINK += $$QMAKE_COPY_FILE $$PWD/ccc $$PRE_DIR
- POST_DIR = $$PWD/post
- QMAKE_POST_LINK += $$QMAKE_COPY_FILE $$PWD/ddd $$POST_DIR
查看Makefile
- cp -f /home/XXX/testpro/ccc /home/XXX/testpro/pre
- cp -f /home/XXX/testpro/ddd /home/XXX/testpro/post
这个示例中需要在当前目录下有pre和post两个目录,如果没有的话make会报错。执行qmake和make后可以看到两个文件已经分别拷贝了。
QMAKE_PRE_LINK和QMAKE_POST_LINK的功能远不止于此,后面可以跟更多的命令
QMAKE_EXTRA_TARGETS
它类似于QMAKE_PRE_LINK和QMAKE_POST_LINK,功能也是非常的丰富。
示例pro
- CPEXT_DIR = $$PWD/extra
- cp_ext.commands += $$QMAKE_COPY_FILE $$PWD/eee $$CPEXT_DIR
- QMAKE_EXTRA_TARGETS += cp_ext
- PRE_TARGETDEPS += cp_ext
执行qmake,查看Makefile文件
- cp_ext:
- cp -f /home/XXX/testpro/eee /home/XXX/testpro/extra
- $(TARGET): cp_ext
执行make后可以看到文件eee已经拷贝成功。
QMAKE_SUBSTITUTES
示例pro
- cp_et.input = $$PWD/fff
- cp_et.output = $$CPEXT_DIR/ggg
- QMAKE_SUBSTITUTES += cp_et
执行qmake和make后可以看到文件已经复制并改名。
总结
通过该实例总结了几种使用qmake构建项目拷贝文件的方式,欢迎大家补充。
参考:
http://www.qtcn.org/bbs/read-htm-tid-55157.html
https://www.codenong.com/18488154/
https://blog.csdn.net/zzs0829/article/details/109047242
使用qmake编译时拷贝文件的更多相关文章
- android源码编译时拷贝替换指定文件
由于要做版本定制,某些版本的资源文件等(例如style.xml)需要不同的配置,但是android的编译开关无法在xml里使用,于是想到了编译时根据不同的编译开关编译不同的文件,如下: 1.建立A.x ...
- gcc编译时头文件和库文件搜索路径
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始( ...
- linux gcc 编译时头文件和库文件搜索路径
一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...
- ubuntu64位系统编译时头文件找不到的问题(可以查看g++ -v路径,设置export C_INCLUDE_PATH,CPLUS_INCLUDE_PATH)
今天编译webrtc时出现以下错误: ninja -C out/Debug Allninja: Entering directory `out/Debug'[1/6] CXX obj/talk/app ...
- 编译时.test文件报错无法解决的方法,关闭test编译
有几次遇到从网上下载到的iOS开源代码编译报错,报错位置为Test Target的源文件,我就挺奇怪我又没做测试为啥会编译Test Target的源文件,之前的暴力解决方法是把Test Target直 ...
- 类库间无项目引用时,在编译时拷贝DLL
例一: xcopy $(TargetPath) $(SolutionDir)\Framework\HCSP.App\bin\Debug /y 例二: xcopy $(TargetPath) $(Sol ...
- Visual studio 编译时copy文件、文件夹
项目属性--生成事件 添加命令 xcopy /y /d "$(SolutionDir)Dll\Linphone\*.dll" "$(TargetDir)\Linphone ...
- qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径(最简单的方法是保持一样的安装路径,最方便的办法是设置qt.conf文件)
在网上直接下载别人编译好的Qt库,为自己使用省了不少事.但往往也会遇到些问题,其中Qt version is not properly installed,please run make instal ...
- Linux下,拷贝文件时,排除某些文件
一下是自己用到到几次实践,觉得很赞: 1.拷贝文件时,排除某些不需要的文件: 1)使用xargs来做: ls /tmp/test/ |grep -v .gz |xargs -i cp -r ...
随机推荐
- async-await和Promise的关系
关于异步处理,ES5的回调使我们陷入地狱,ES6的Promise使我们脱离魔障,终于.ES7的async-await带我们走向光明.今天就来学习一下 async-await. 经常会看到有了 asyn ...
- spring-boot-route(十七)使用aop记录操作日志
在上一章内容中--使用logback管理日志,我们详细讲述了如何将日志生成文件进行存储.但是在实际开发中,使用文件存储日志用来快速查询问题并不是最方便的,一个优秀系统除了日志文件还需要将操作日志进行持 ...
- selenium分布式启动(deepin)
1.deepin安装jdk: 下载地址:链接:https://pan.baidu.com/s/19-pU8G6RzMW92uBCxBH7sA 密码:1c7n 解压:tar -zxvf jdk-8u20 ...
- 圆形进度条的模仿3-DrawArc,DrawCircle,DrawText,自定义属性实例讲解
前面两篇中已经讲过如何使用drawARC,等,画其他的图形的方法的使用也是一样的,只是参数不同, 同时也讲了如何通过xml进行自定义属性,接下来这篇便是通过实例讲解如何实地应用起来, 效果如下,点击开 ...
- Linux显示系统信息sh脚本
#!/bin/bash # #******************************************************************** #Author: wangxia ...
- Docker指令整理
date: 2018-11-18 11:09:28 updated: 2018-11-18 11:09:28 Docker指令整理 管理员权限!!! 查看docker版本 docker -v 启动 s ...
- H5页面 用户启动无痕浏览本地储存 localstorage 清楚数据
移动端开发时,如果用户浏览器启用了无痕浏览,那么本地存储信息就会失效,会导致页面信息报错 解决办法: 先判断是否能适用 localStorage.setItem 如果不行在适用 cookie coo ...
- mysql一些使用函数(不断更新)
1.中文转拼音码,多用于将姓名转成拼音(例如:刘德华:liudehua) /*建立拼音码表*/ CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yi ...
- 关于“Cannot resolve table 'user'”报错的问题解决
springboot+vue建立映射时,后端引用@Table(name="user") 来对应表名 user,但引用后报错"Cannot resolve table 'u ...
- 多快好省地使用pandas分析大型数据集
1 简介 pandas虽然是个非常流行的数据分析利器,但很多朋友在使用pandas处理较大规模的数据集的时候经常会反映pandas运算"慢",且内存开销"大". ...