• 3604阅读
  • 7回复

[提问]subdirs模板的工程,如何让编译的中间文件和最终二进制文件放入一个文件夹中? [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-10
我用了subdirs模板的pro组织了一个工程,编译的时候发现中间文件还是产生在了下属子工程的文件夹中,最终的执行档也是分别呆在各自的release文件夹中。我该设置哪个变量才能让编译中间文件和最终执行档自动放在一个文件夹中呢?(至少能实现后者)否则我还得从子工程的文件夹中一个一个往外“捞”……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kimtaikee

只看该作者 1楼 发表于: 2013-05-10
你可以在subdirs.pro目录下定义一个subdirs.pri文件用来定义共享变量,然后让子工程的*.pro文件包含这个*.pri然后生成obj,moc etc.文件到这个文件夹,不用我给你写出来吧?

离线roywillow

只看该作者 2楼 发表于: 2013-05-10
回 1楼(kimtaikee) 的帖子
唔……思路是理解了,不过具体怎么做还不确定,以前没用过subdirs,所以也就没想过要去干涉中间和最终文件的位置……给个栗子吧XD
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 3楼 发表于: 2013-05-11
Re:回 1楼(kimtaikee) 的帖子
引用第2楼roywillow于2013-05-10 22:28发表的 回 1楼(kimtaikee) 的帖子 :
唔……思路是理解了,不过具体怎么做还不确定,以前没用过subdirs,所以也就没想过要去干涉中间和最终文件的位置……给个栗子吧XD

比如说,我有一个简单的工程,只包含一个可执行程序及其依赖的几个动态库和插件,文件结构如下:

.
|-- TestBench.pro
|-- projectcommon.pri
|-- src
|   |-- app
|   |   |-- app.pro
|   |   |-- main.cpp
|   |   |-- main.icns
|   |   |-- main.ico
|   |   |-- main.rc
|   |   `-- res
|   |       |-- app-logo.png
|   |       `-- main.qrc
|   |-- libs
|   |   |-- hcomponents
|   |   |   |-- componentplugin.cpp
|   |   |   |-- componentplugin.h
|   |   |   |-- hcomponents.pro
|   |   |   `-- .........
|   |   |-- hcontrollers
|   |   |   |-- hcontrollers.pro
|   |   |   |-- hvcontroller.cpp
|   |   |   |-- hvcontroller.h
|   |   |   `-- .........
|   |   |-- libs.pro
|   |   `-- projectlibrary.pri
|   |-- plugins
|   |   |-- alignmentcomponent
|   |   |   |-- alignmentcomponent.pro
|   |   |   |-- alignmentcomponentplugin.cpp
|   |   |   |-- alignmentcomponentplugin.h
|   |   |   `-- ........
|   |   |-- columnaperturecomponent
|   |   |   |-- columnaperturecomponent.pro
|   |   |   |-- columnaperturecomponentplugin.cpp
|   |   |   |-- columnaperturecomponentplugin.h
|   |   |   `-- ..........
|   |   |-- plugins.pro
|   |   `-- ..........
|   |-- projectplugin.pri
|   |-- src.pro
|   `-- ..........


那么我会有一个 projectcommon.pri 文件,然后其他所有的 .pro和.pri 文件都会包含该common文件,该文件内可以定义若干常用的qmake的函数以及变量,比如:可执行程序存放目录,插件存放目录,等等
离线roywillow

只看该作者 4楼 发表于: 2013-05-11
回 3楼(dbzhang800) 的帖子
我主要是不清楚如果我想使用相对路径的话,该用那些变量?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ppdayz

只看该作者 5楼 发表于: 2013-05-11
        应该就是这些吧
        DESTDIR = $$PWD/../release/xxxxxxxx
        MOC_DIR=temp/release/moc
        RCC_DIR=temp/release/rcc
        UI_DIR=temp/release/ui
        OBJECTS_DIR=temp/release/obj
离线dbzhang800

只看该作者 6楼 发表于: 2013-05-11
Re:回 3楼(dbzhang800) 的帖子
引用第4楼roywillow于2013-05-11 18:59发表的 回 3楼(dbzhang800) 的帖子 :
我主要是不清楚如果我想使用相对路径的话,该用那些变量?

Qt Creator 的源码是最好的例子
离线roywillow

只看该作者 7楼 发表于: 2013-05-11
回 6楼(dbzhang800) 的帖子
!好像确实如此!
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个