为什么QTCreator会忽略$ BUILDDIR var来创建个人构建目录

时间:2016-08-29 18:24:57

标签: qt qt-creator qmake

我正在使用qtcreator 4.0.3,我尝试创建一个目录结构 所有构建,如下所示:

〜/建造/ project01 〜/编译/ project02 ... 〜/生成/ projectNN

我正在使用这个.pro文件:

:><------- Cutting ------------
#
# BUILDDIR Where the executable file was create
#
BUILDDIR = $$HOME_PATH/Builds/$$APP_NAME
#
# All Directory of temporary files
#
OBJECTS_DIR =   $$BUILDDIR/obj
MOC_DIR =       $$BUILDDIR/moc
RCC_DIR =       $$BUILDDIR/rcc
UI_DIR =        $$BUILDDIR/ui
DESTDIR =       $$BUILDDIR/bin
#
# If the dirs not exists, I'll create it
#

THis instructions are ignored
Any directory was created.
!exists( $$DESTDIR ) {
    message("Creating $$DESTDIR struct")
    mkpath( $$DESTDIR )
}
!exists( $$OBJECTS_DIR ) {
    message("Creating $$OBJECTS_DIR")
    mkpath( $$OBJECTS_DIR )
}
!exists( $$MOC_DIR ) {
    message("Creating $$MOC_DIR")
    mkpath( $$MOC_DIR )
}
!exists( $$RCC_DIR ) {
    message("Creating $$RCC_DIR")
    mkpath( $$RCC_DIR )
}
!exists( $$UI_DIR ) {
    message("Creating $$UI_DIR")
    mkpath( $$UI_DIR )
}
:><------- Cutting ------------

但这不起作用。始终qtcreator使用默认目录结构 在工具 - &gt;选项 - &gt;构建和运行 - >默认构建目录中配置。

简单的是忽略了这些说明...... 我做错了吗?

1 个答案:

答案 0 :(得分:0)

这是一种反模式,它通常不起作用,因为没有人使用qmake项目期望它们表现得那样:Qt Creator没有,其他人没有,等等。

对于任何给定项目,您可以通过在构建目录中执行qmake来设置构建目录。例如,假设您希望构建~/src/myproject/myproject.pro

mkdir -p ~/build/myproject
cd ~/build/myproject
qmake ~/src/myproject
gmake -j8

要在子文件夹中构建多个项目,您应该有一个引用它们的顶级subdirs项目。 E.g。

+--- myproject
    +--- myproject.pro
    +--- lib1
    |   +--- lib1.pro
    |   ...
    +--- lib2
    |   +--- lib2.pro
    |   ...
    +--- app1
    .   +--- app1.pro
    .   ...
    etc.

源目录结构将在build文件夹中复制。除了在引用子项目构建的目标时,例如,您通常不应该关注构建文件夹中的内容。如果app1取决于lib2,则需要将构建产品添加为依赖项。 This answer显示了如何做到这一点。