为什么QTCreator忽略$BUILDDIR变量来创建个人构建目录
我正在使用qtcreator 4.0.3,并尝试创建一个目录结构来 所有构建,如下所示: ~/Build/project01 ~/Build/project02 ... ~/Build/projectNN 我正在使用这个.pro文件:为什么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 #
:><------- 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项目的完整演示,请参阅。