Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么QTCreator忽略$BUILDDIR变量来创建个人构建目录_Qt_Qt Creator_Qmake - Fatal编程技术网

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

为什么QTCreator忽略$BUILDDIR变量来创建个人构建目录,qt,qt-creator,qmake,Qt,Qt Creator,Qmake,我正在使用qtcreator 4.0.3,并尝试创建一个目录结构来 所有构建,如下所示: ~/Build/project01 ~/Build/project02 ... ~/Build/projectNN 我正在使用这个.pro文件: :><------- Cutting ------------ # # BUILDDIR Where the executable file was create # BUILDDIR = $$HOME_PATH/Builds/$$APP_NAME #

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

~/Build/project01 ~/Build/project02 ... ~/Build/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 ------------

:>这是一种反模式,通常不起作用,因为使用qmake项目的人都不希望他们这样做:Qt创建者不这样做,其他人不这样做,等等

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

mkdir -p ~/build/myproject
cd ~/build/myproject
qmake ~/src/myproject
gmake -j8
要在子文件夹中生成多个项目,您应该有一个引用它们的顶级
子文件夹
项目。例如

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

源目录结构将复制到生成文件夹中。除引用子项目生成的目标外,通常不应关心生成文件夹中的内容,例如,如果
app1
依赖于
lib2
,则需要将生成产品作为依赖项添加。这是一种反模式,它通常不起作用,因为使用qmake项目的人都不希望他们这样做:Qt创建者不这样做,其他人不这样做,等等

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

mkdir -p ~/build/myproject
cd ~/build/myproject
qmake ~/src/myproject
gmake -j8
要在子文件夹中生成多个项目,您应该有一个引用它们的顶级
子文件夹
项目。例如

+--- myproject
    +--- myproject.pro
    +--- lib1
    |   +--- lib1.pro
    |   ...
    +--- lib2
    |   +--- lib2.pro
    |   ...
    +--- app1
    .   +--- app1.pro
    .   ...
    etc.
源目录结构将复制到生成文件夹中。除引用子项目生成的目标外,通常不应关心生成文件夹中的内容,例如,如果
app1
依赖于
lib2
,则需要将生成产品作为依赖项添加。显示了具体的操作方法。

啊,还有一个。你为什么认为你需要这些?为什么您关心构建目录中的内容?最有可能的情况是,您试图引用由子项目构建的库或其他目标,但遇到了问题。请解释您的项目是如何组织的,依赖关系是什么,以及您试图解决的首要问题是什么。有关跨平台dll+可执行qmake项目的完整演示,请参阅。啊,还有一个。你为什么认为你需要这些?为什么您关心构建目录中的内容?最有可能的情况是,您试图引用由子项目构建的库或其他目标,但遇到了问题。请解释您的项目是如何组织的,依赖关系是什么,以及您试图解决的首要问题是什么。有关跨平台dll+可执行qmake项目的完整演示,请参阅。