有时在编译前需要准备一些文件,例如修改了 QtCreator 的编译输出目录: Build & Run > Default build directory,使用 Promote 后需要在编译前把相应 Widget 的头文件复制到 .o 文件所在的目录,这时就可以在 .pro 文件中使用复制文件的命令(其实就是执行系统命令),让 qmake 执行这些命令来复制文件,而不是手动的复制需要的文件。

可以使用 qmake 时能执行系统的命令的特性来做很多事情,不只是复制文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
QT += core gui sql xml
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = Schedule
TEMPLATE = app
CONFIG -=app_bundle
 
# Output directory
CONFIG(debug, debug|release) {
compiled = debug
}
CONFIG(release, debug|release) {
compiled = release
}
 
# All temporay files are all put in the directory $$compiled
DESTDIR = bin
OBJECTS_DIR = $$compiled
MOC_DIR = $$compiled
RCC_DIR = $$compiled
UI_DIR = $$compiled
 
# Copy promotion required headers to build directory
win32 {
COPY_DEST = $$replace(OUT_PWD, /, \\)
system("copy gui\\ClassWidget.h $$COPY_DEST\\$$compiled\\ClassWidget.h")
system("copy gui\\CourseWidget.h $$COPY_DEST\\$$compiled\\CourseWidget.h")
system("copy gui\\TeacherWidget.h $$COPY_DEST\\$$compiled\\TeacherWidget.h")
}
 
mac {
system("cp gui/ClassWidget.h $$OUT_PWD/$$compiled/ClassWidget.h")
system("cp gui/CourseWidget.h $$OUT_PWD/$$compiled/CourseWidget.h")
system("cp gui/TeacherWidget.h $$OUT_PWD/$$compiled/TeacherWidget.h")
}
 
SOURCES += main.cpp

在 .pro 文件里路径分隔符都是 /,但在 Windows 中, / 对于 copy 命令有特殊用途,所以需要把 / 替换为 \,否则复制文件会失败

http://www.qtdebug.com/qtbook-misc-qmake-copy-file/

qmake 时复制文件(自动在编译前做一些操作,且写在.pro文件里)的更多相关文章

  1. Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性

    一.背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的.当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种 ...

  2. 如何写一个bat文件,让他去执行某一个地方的bat文件

    新建一个bat文件,里面编写如下内容:@echo offcall 你bat文件的路径\startup.bat pause --------------------------------------- ...

  3. Qt之pro文件解析

    在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...

  4. Qt .pro文件详解

    在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...

  5. 【Qt pro 文件配置】

    一.默认配置 默认的pro文件配置如下: 如果采用Qt默认的pro配置,其编译后产生的文件会默认集中分布在debug和release目录下,如下图的obj和moc等文件对后续打包发布并没有意义. 二. ...

  6. 如何将Unicode文本写到日志文件中

    有时为了定位问题,我们需要结合打印日志来处理.特别是较难复现的,一般都需要查看上下文日志才能找出可能存在的问题.考虑到程序要在不同语言的操作系统上运行,程序界面显示要支持Unicode,打印出来的日志 ...

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

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

  8. 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

    在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Alte ...

  9. qmake使用方法(自动生成Makefile文件)

    qmake的使用简介 下面是qmake的简单介绍和使用要领,更为详细的信息请参阅手册 qmake的介绍 手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makef ...

随机推荐

  1. 断言(Assert)与异常(Exception)

    ## 断言和异常 断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置. 异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性. ## 断言的使用 在防御式编程中经常会用断 ...

  2. [Ramda] R.project -- Select a Subset of Properties from a Collection of Objects in Ramda

    In this lesson we'll take an array of objects and map it to a new array where each object is a subse ...

  3. 解决离线Could not parse configuration:hibernate.cfg.xml错误

    离线使用hibernate tool 生成反向工程,在配置 配置文件完,生成配置文件后,会报出org.hibernate.HibernateException: Could not parse con ...

  4. System.nanoTime()和System.currentTimeMillis()性能问题

    ​ 之前给模块做性能优化的时候,需要将性能调到毫秒级,使用了System.nanoTime()和System.currentTimeMillis()对代码分片计时分析耗时操作,后发现在串行情况下性能达 ...

  5. 子查询及exists

    子查询分为无关子查询和相关子查询 无关子查询,只查询一次,与外查询无关,可作为查询条件: select * from student where sno in (select sno from stu ...

  6. 微信支付-公众号支付H5调用支付详解

    微信公众号支付 最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一. ...

  7. 表达式树Expression

    Expression表达式树动态查询 在进行数据列表的查询中,我们通常会使用两种方式进行查询: linq查询 数据库sql语句查询 这样固然可以实现查询,本人之前也都是这么做的,因为查询的条件很少.使 ...

  8. 远程ssh执行命令时提示找不到命令

    最开始的时候碰到这种问题,是在hadoop003上配置了jdk1.8, 在hadoop002上执行ssh hadoop003 java -version提示没有命令,先ssh hadoop003然后执 ...

  9. Unity UGUI——Rect Transform包裹(Anchor Presets)

    Anchor Presets使用演示样品物业 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXJfQUhhbw==/font/5a6L5L2T/fonts ...

  10. iOS的安全性和越狱

    提到越狱,很多人第一反应大概是免费的游戏和 app. 作为软件从业人员,深知中国的大环境的特殊性.内有用户想吃免费午餐的不良付费习惯,外有行业内大头诸如某讯对创新的绞杀.大家对越狱是为了免费.盗版软件 ...