【问题标题】:Disable "The build directory needs to be at the same level as the source directory" warning in Qt Creator在 Qt Creator 中禁用“构建目录需要与源目录处于同一级别”警告
【发布时间】:2018-02-05 01:41:32
【问题描述】:

我有一个 Qt 项目位于文件夹 /Users/donaldduck/OneDrive/Documents/myproject 中,我希望将构建目录作为源目录的子文件夹,位于 /Users/donaldduck/OneDrive/Documents/myproject/build-myproject。问题是 Qt Creator 给了我一个警告说“构建目录需要与源目录处于同一级别”:

除了这个警告,项目编译得很好。我什至没有发现构建目录是源目录的子文件夹的任何问题。我在网上搜索了为什么会收到此警告,我发现这可能是因为构建目录与源目录不在同一级别可能会导致相对路径出现问题。但是我的程序中没有任何相对路径,我的所有文件都在一个 QRC 资源中。

所以这个错误很烦人,我想禁用它。我在网上搜索了解决方案,但没有找到任何解决方案。

另外,我只在我的 Windows 计算机和我的 Mac 虚拟机上收到此警告。我的 Linux 虚拟机上有一个类似的文件夹结构(构建目录是源目录的子文件夹),但它们都没有给出任何警告。此外,在我在 Windows 上更新 Qt 之前,我没有收到该警告,但自从我更新它后,我在 Windows 上也收到了此警告。

如何禁用此警告?

【问题讨论】:

  • 一般来说,您会希望按照推荐的方式进行操作。理想情况下,源目录仅包含受版本控制的文件。最简单的就是使用 Qt Creator 建议的构建目录。为什么要更改默认行为?您是否想通过在源目录下而不是在它旁边构建目录来解决实际问题?
  • 另请注意,通常您至少有两个构建目录,一个用于调试,一个用于发布构建。如果您面向更多平台,或者想要针对不同版本使用不同的构建选项,那么您可能有任意数量的构建目录。所以最好用复数形式谈论“构建目录”......
  • 在 OSX 环境中将构建目录准备为 osxdaily.com/2015/08/06/… 并将物理位置指向您喜欢的任何位置,但请参阅 Qt Creator 中的符号链接。只是有点不确定“Mac 虚拟机”是否可以从那里获得。
  • 另外,我相信警告来自 qmakeqmake 实际上是在构建目录中运行,并给出源目录的相对路径。可能有一些默认假设,如果在某些情况下构建目录实际上位于源目录下,则可能会中断,因此会发出警告。但我不确定,所以不要写这个作为答案。
  • @hyde 我想这样做,否则我的 Documents 文件夹会有点乱,因为我会有(至少)3个不同的文件夹:一个用于源,一个用于调试build 和一个用于发布版本。我认为最好将构建目录放在源目录中,这样我整个项目的 Documents 文件夹中只有一个文件夹,这样所有东西都在同一个地方。而且我确实有几个构建目录,但我没有提到它以免打扰您的细节。我实际上有六个构建目录,每个操作系统两个。

标签: c++ qt qt-creator compiler-warnings suppress-warnings


【解决方案1】:

无法禁用,但解决方案是更改构建目录。

如果源目录和构建目录的绝对路径名中的/(或Windows 上的\)的编号 不同,此警告会显示。

假设你的源目录是“c:\dev\source\project”,那么“..\build-directory”就可以了,但是例如“..\build\directory”不是。 "c:\dev\build\project\debug" 不行,但 "c:\dev\build\project-debug" 可以。 “./debug”和“debug”也不能作为构建目录。

你也能观察到吗?还是所有以“..\”开头的路径都会触发此警告?

Qmake 在一些罕见的极端情况下将无法构建不遵循“与根的距离相同”规则的项目,并且在这样做时会产生非常神秘的输出。所以我们需要警告这样的设置。

你可以像这样使用你的默认目录:../%{CurrentBuild:Name}

截图:

我使用这个目录:../Build/Windows/%{CurrentBuild:Name},我不关心警告!

参考:https://bugreports.qt.io/browse/QTCREATORBUG-16616

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2011-02-26
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多