使用qmake构建项目时,需要在make时拷贝一些文件到指定位置,非执行make install,下面总结列举一下我了解的方式

COPIES

示例pro

  1. 1 COPY_DIR = $$PWD/copys
  2. 2
  3. 3 cp_kk.files += \
  4. 4 aaa \
  5. 5 bbb
  6. 6
  7. 7 cp_kk.path += $$INSTALL_DIR/copys
  8. 8
  9. 9 COPIES += cp_kk

执行qmake后查看Makefile文件

  1. COPY = cp -f
  2. COPY_FILE = cp -f
  3. COPY_DIR = cp -f -R
  4.  
  5. distdir: FORCE
  6. @test -d $(DISTDIR) || mkdir -p $(DISTDIR)
  7. $(COPY_FILE) --parents $(DIST) $(DISTDIR)/
  8. $(COPY_FILE) --parents /home/XXX/Qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
  9. $(COPY_FILE) --parents main.cpp $(DISTDIR)/
  10. $(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

  1. PRE_DIR = $$PWD/pre
  2. QMAKE_PRE_LINK += $$QMAKE_COPY_FILE $$PWD/ccc $$PRE_DIR
  3.  
  4. POST_DIR = $$PWD/post
  5. QMAKE_POST_LINK += $$QMAKE_COPY_FILE $$PWD/ddd $$POST_DIR

查看Makefile

  1. cp -f /home/XXX/testpro/ccc /home/XXX/testpro/pre
  2. 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

  1. CPEXT_DIR = $$PWD/extra
  2. cp_ext.commands += $$QMAKE_COPY_FILE $$PWD/eee $$CPEXT_DIR
  3. QMAKE_EXTRA_TARGETS += cp_ext
  4. PRE_TARGETDEPS += cp_ext

执行qmake,查看Makefile文件

  1. cp_ext:
  2. cp -f /home/XXX/testpro/eee /home/XXX/testpro/extra
  3.  
  4. $(TARGET): cp_ext

执行make后可以看到文件eee已经拷贝成功。

QMAKE_SUBSTITUTES

示例pro

  1. cp_et.input = $$PWD/fff
  2. cp_et.output = $$CPEXT_DIR/ggg
  3. 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编译时拷贝文件的更多相关文章

  1. android源码编译时拷贝替换指定文件

    由于要做版本定制,某些版本的资源文件等(例如style.xml)需要不同的配置,但是android的编译开关无法在xml里使用,于是想到了编译时根据不同的编译开关编译不同的文件,如下: 1.建立A.x ...

  2. gcc编译时头文件和库文件搜索路径

    特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始( ...

  3. linux gcc 编译时头文件和库文件搜索路径

    一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...

  4. 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 ...

  5. 编译时.test文件报错无法解决的方法,关闭test编译

    有几次遇到从网上下载到的iOS开源代码编译报错,报错位置为Test Target的源文件,我就挺奇怪我又没做测试为啥会编译Test Target的源文件,之前的暴力解决方法是把Test Target直 ...

  6. 类库间无项目引用时,在编译时拷贝DLL

    例一: xcopy $(TargetPath) $(SolutionDir)\Framework\HCSP.App\bin\Debug /y 例二: xcopy $(TargetPath) $(Sol ...

  7. Visual studio 编译时copy文件、文件夹

    项目属性--生成事件 添加命令 xcopy /y /d "$(SolutionDir)Dll\Linphone\*.dll" "$(TargetDir)\Linphone ...

  8. qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径(最简单的方法是保持一样的安装路径,最方便的办法是设置qt.conf文件)

    在网上直接下载别人编译好的Qt库,为自己使用省了不少事.但往往也会遇到些问题,其中Qt version is not properly installed,please run make instal ...

  9. Linux下,拷贝文件时,排除某些文件

     一下是自己用到到几次实践,觉得很赞:   1.拷贝文件时,排除某些不需要的文件:   1)使用xargs来做: ls /tmp/test/ |grep -v .gz |xargs -i cp -r ...

随机推荐

  1. async-await和Promise的关系

    关于异步处理,ES5的回调使我们陷入地狱,ES6的Promise使我们脱离魔障,终于.ES7的async-await带我们走向光明.今天就来学习一下 async-await. 经常会看到有了 asyn ...

  2. spring-boot-route(十七)使用aop记录操作日志

    在上一章内容中--使用logback管理日志,我们详细讲述了如何将日志生成文件进行存储.但是在实际开发中,使用文件存储日志用来快速查询问题并不是最方便的,一个优秀系统除了日志文件还需要将操作日志进行持 ...

  3. selenium分布式启动(deepin)

    1.deepin安装jdk: 下载地址:链接:https://pan.baidu.com/s/19-pU8G6RzMW92uBCxBH7sA 密码:1c7n 解压:tar -zxvf jdk-8u20 ...

  4. 圆形进度条的模仿3-DrawArc,DrawCircle,DrawText,自定义属性实例讲解

    前面两篇中已经讲过如何使用drawARC,等,画其他的图形的方法的使用也是一样的,只是参数不同, 同时也讲了如何通过xml进行自定义属性,接下来这篇便是通过实例讲解如何实地应用起来, 效果如下,点击开 ...

  5. Linux显示系统信息sh脚本

    #!/bin/bash # #******************************************************************** #Author: wangxia ...

  6. Docker指令整理

    date: 2018-11-18 11:09:28 updated: 2018-11-18 11:09:28 Docker指令整理 管理员权限!!! 查看docker版本 docker -v 启动 s ...

  7. H5页面 用户启动无痕浏览本地储存 localstorage 清楚数据

    移动端开发时,如果用户浏览器启用了无痕浏览,那么本地存储信息就会失效,会导致页面信息报错 解决办法: 先判断是否能适用 localStorage.setItem 如果不行在适用  cookie coo ...

  8. mysql一些使用函数(不断更新)

    1.中文转拼音码,多用于将姓名转成拼音(例如:刘德华:liudehua) /*建立拼音码表*/ CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yi ...

  9. 关于“Cannot resolve table 'user'”报错的问题解决

    springboot+vue建立映射时,后端引用@Table(name="user") 来对应表名 user,但引用后报错"Cannot resolve table 'u ...

  10. 多快好省地使用pandas分析大型数据集

    1 简介 pandas虽然是个非常流行的数据分析利器,但很多朋友在使用pandas处理较大规模的数据集的时候经常会反映pandas运算"慢",且内存开销"大". ...