Qt 指定输出目录后,它仍然在本地目录中创建调试和发布文件夹

问题描述 投票:0回答:2

我使用宏在 .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 qmake
2个回答
2
投票

为了避免在源代码树中创建额外的调试和发布文件夹,您应该在 Qt Creator 中启用 Shadow 构建。

未启用时,Qt Creator 会在源代码树中创建调试和发布文件夹(更准确地说,qmake 创建它们)。您在 .pro 文件中设置的内容仅告诉 qmake 您想要放置某些特定文件夹的位置。但 qmake 本身正在您的源代码树中运行,并在那里创建调试和发布文件夹。当您启用影子构建时,qmake 将在您在影子构建路径中设置的文件夹中运行。


0
投票

这个问题已经存在七年了:(

我研究了qmake流程后,之所以还是生成debugrelease文件夹,是因为

***_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
    
© www.soinside.com 2019 - 2024. All rights reserved.