Visual studio 2013 Visual Studio 2013和Qt5:QTDIR设置太晚

Visual studio 2013 Visual Studio 2013和Qt5:QTDIR设置太晚,visual-studio-2013,path,qt5.4,project-properties,Visual Studio 2013,Path,Qt5.4,Project Properties,MSVC2013中的Qt可以正常工作,但有一点除外:未找到DLL,因为在设置本地调试环境时未定义$(QTDIR) 我的调试环境设置: PATH=$(QTDIR)\bin%3b$(PATH) PATH=C:\Qt\Qt5.4.1\5.4\msvc2013\bin%3b$(PATH) 我的.user文件: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" xmlns="http://schem

MSVC2013中的Qt可以正常工作,但有一点除外:未找到DLL,因为在设置本地调试环境时未定义$(QTDIR)

我的调试环境设置:

PATH=$(QTDIR)\bin%3b$(PATH)
PATH=C:\Qt\Qt5.4.1\5.4\msvc2013\bin%3b$(PATH)
我的.user文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
    <QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <LocalDebuggerEnvironment>PATH="$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b"$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
    <QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <LocalDebuggerEnvironment>PATH="$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
  </PropertyGroup>
</Project>

是否可以让Visual Studio正确处理此问题,或者我必须手动输入路径?

Visual Studio似乎从上到下解析这些行,因此使用您的代码

<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
<QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
PATH=$(QTDIR)\bin%3b$(路径)
C:\Qt\Qt5.4.1\5.4\msvc2013
…变量$(QTDIR)在第二行中定义,不能在第一行中使用

只需切换顺序,以便在使用变量之前对其进行定义:

<QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
C:\Qt\Qt5.4.1\5.4\msvc2013
路径=$(QTDIR)\bin%3b$(路径)

注意:Visual Studio仅在启动时读取.user文件,因此您需要在编辑该文件后(重新)启动Visual Studio。

感谢您对此问题的讨论。我可以报告,它仍然存在于Windows版本2.1.1/Visual Studio 2015的Qt 5.8/Qt扩展中。症状是在VStudio项目属性调试器…环境中输入“$(QTDIR)\bin”(Qt DLL的位置)作为路径文件夹规范似乎可以工作,但实际上不能

“似乎可以工作”的意思是,如果您单击该选项检查调试器环境属性,并且环境属性的原始形式看起来像“PATH=$(QTDIR)\bin;…;$(PATH)”,VStudio编辑对话框将有助于通知您该路径字符串的计算结果为(例如),“PATH=D:\TechApps\Qt\5.8\msvc2015\u 64b\bin;…”--如果QTDIR宏确实存在并且具有正确的值,则应该如此。这是残酷的欺骗

因为,所谓“真的不起作用”,我的意思是,当从VStudio中启动依赖Qt的应用程序时,实际准备使用的路径没有看到这个宏。您的美丽路径字符串将减少为“\bin;…”。您可以通过将Qt DLL从$(QTDIR)\bin临时复制到应用程序可执行文件的文件夹中来确认这一点。您的应用程序将正确启动。如果你从程序中检查你的路径(使用C++中的GETEnv(“路径”),你会发现你的程序的路径字符串缺少QTDIR。(即,如果QTDIR是空字符串,它就是什么) FWIW,这个问题的另一个症状是,如果检查VStudio宏列表,$(QTDIR)不在列表中

上述解决方案(在…vcxproj.user中重新排列元素)似乎可以解决此问题。当您在该文件前面移动QTDIR的定义时,应用程序实际可用的路径字符串是正确的,并且$(QTDIR)出现在Visual Studio已知的宏列表中


但是,我不知道在VStudio中更改“Qt VS Tools”选项或“Qt Project Settings”是否会导致.user文件再次被错误覆盖。

我已经尝试过了,但没有效果。是否可以检查$(QTDIR)的值?对于我(MSVS2013,QT5.3.1和5.3.2),自动生成的文件的顺序与您的相同,对其进行更改有帮助。您对所有组都进行了更改吗?您可以在许多地方看到$QTDIR的值,例如在编辑项目属性时(例如,常规->输出目录->编辑…)。在编辑时,“宏>>”打开所有可用变量的可搜索列表。是的,我更改了两个条目。我还需要做什么吗?哦,重新启动Visual Studio解决了这个问题!但是为什么QTDIR总是添加两次到调试器环境中?查看您的.user文件,Release | x64的属性组甚至根本没有QTDIR的设置!应该是vs加载项我不知道为什么。如果在.user文件中没有指定它,Qt会返回到某个神秘的路径,我也不知道它是从哪里得到的。这里有人知道吗?这是Qt加载项的已知错误,请参见: