我使用宏在 .pro 文件中指定输出目录,效果很好。但我的本地目录仍然创建了调试和发布文件夹。我怎样才能停止创建这两个空文件夹?
编辑:这是在我的 Windows 7 上。我使用 qt 5.5 Creator 3.6.0。 Windows 10 上的相同设置表现不同。在 Windows 10 上,它输出到与 bin 同一级别的文件夹,称为 build-configuration-details。
debug {
DESTDIR = ../../bin/debug
MOC_DIR = ../../build/lib/debug
OBJECTS_DIR = ../../build/lib/debug
}
release {
DESTDIR = ../../bin/release
MOC_DIR = ../../build/lib/release
OBJECTS_DIR = ../../build/lib/release
}
原始结构
app
|
lib
|
.pro
编译后
bin
| |
debug (libs)
| |
release (libs)
|
build
| |
debug (objects)
| |
release (objects)
|
app
|
lib
|
.pro
|
debug (empty)
|
release (empty)
为了避免在源代码树中创建额外的调试和发布文件夹,您应该在 Qt Creator 中启用 Shadow 构建。
未启用时,Qt Creator 会在源代码树中创建调试和发布文件夹(更准确地说,qmake 创建它们)。您在 .pro 文件中设置的内容仅告诉 qmake 您想要放置某些特定文件夹的位置。但 qmake 本身正在您的源代码树中运行,并在那里创建调试和发布文件夹。当您启用影子构建时,qmake 将在您在影子构建路径中设置的文件夹中运行。
这个问题已经存在七年了:(
我研究了qmake流程后,之所以还是生成debug和release文件夹,是因为
***_DIR
没有完全指定。在我的项目中指定PRECOMPILED_DIR
后,将不再生成这两个目录。
基于source,如果没有设置任何变量并且
debug_and_release
包含在CONFIG
中,则为空或。将替换为debug/或release/,然后生成对应的目录。因此,如果您不确定,那么您可以指定下面列出的所有目录变量:
OBJECTS_DIR
MOC_DIR
RCC_DIR
PRECOMPILED_DIR
QGLTF_DIR
TRACEGEN_DIR
QMLCACHE_DIR
LRELEASE_DIR
LEX_DIR
YACC_DIR