相对文件路径的差异:Qt Creator的调试模式和发布模式

时间:2014-12-16 08:41:52

标签: windows qt qt-creator qt4.8

 QFile file("test.txt");
 if (file.open(QIODevice::ReadOnly)) {
     qDebug()<<"You got me.";
 }

我正在使用:

  • Qt 4.8.6 with MSVC 2010
  • Qt Creator 3.1.1
  • Windows 7(32位)

从上面的代码如果.pro文件尚未更改,相应的构建目录

调试模式

D:\...\build-Main-MSVC2010-Debug

并且调试模式的.exe将位于

D:\...\build-Main-MSVC2010-Debug\debug

发布模式

D:\...\build-Main-MSVC2010-Release

并且发布模式的.exe将位于

D:\...\build-Main-MSVC2010-Release\release

[问题]

如果我想要发布程序来阅读&#34; test.txt&#34;文件,我把文件放在文件夹

D:\...\build-Main-MSVC2010-Release\release

这是有道理的。

但如果我想要调试程序来阅读&#34; test.txt&#34;文件,我必须把文件放在文件夹

D:\...\build-Main-MSVC2010-Debug\

而不是

D:\...\build-Main-MSVC2010-Debug\debug

我想知道为什么相对文件路径在debug&amp;发布模式,很长一段时间一直困扰着我。


[编辑]

感谢@Paul和@lpapp。以下是工作目录的屏幕截图:

调试: enter image description here

推出: enter image description here


[非常重要的编辑]

对于@Paul和@lpapp:

我曾经将所需的.dll复制到release文件夹来测试运行时,我刚刚找到如果我通过Qt Creator执行发布程序,工作目录就会像你说。但是,如果我直接单击release文件夹中的.exe,情况就像我在问题中所说的那样。我认为从Qt Creator运行程序和直接执行程序之间可能存在差异。

1 个答案:

答案 0 :(得分:1)

这取决于程序的当前工作目录。您可以在项目 - >运行设置 - >运行 - >工作目录中更改它。

enter image description here

  

如果我通过Qt Creator执行发布程序,工作目录就会像你说的那样工作。但是,如果我直接单击release文件夹中的.exe,情况就像我在问题中所说的那样。

这是因为当您单击release foder中的.exe时,该文件夹是该程序的工作目录。从Qt Creator运行程序时,Qt Creator会明确设置工作目录。您可以将工作目录覆盖为创建.exe文件的目录,这样无论您是从Qt Creator运行程序还是仅在资源管理器中单击.exe,都没有区别。