![](/img/trans.png)
[英]Display QString (Qt5) content in Visual Studio 2013 debugging?
[英]Visual Studio 2013 and Qt5: QTDIR set too late
在 MSVC2013 中,一切都适用于 Qt,除了一件事:在设置本地调试环境时,未找到 DLL,因为 $(QTDIR) 未定义。
我的调试环境设置:
PATH=$(QTDIR)\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>
我不知道为什么,但是 $(QTDIR) 变量对 LocalDebuggerEnvironment 不可用。
它适用于以下调试环境设置:
PATH=C:\Qt\Qt5.4.1\5.4\msvc2013\bin%3b$(PATH)
是否可以让 Visual Studio 正确处理这个问题,还是我必须手动输入路径?
似乎 Visual Studio 从上到下解析行,所以用你的代码......
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
<QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
...变量 $(QTDIR) 在第二行定义,不能在第一行使用。
只需切换顺序,以便在使用之前定义变量:
<QTDIR>C:\Qt\Qt5.4.1\5.4\msvc2013</QTDIR>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
注意:Visual Studio 仅在启动时读取 .user 文件,因此您需要在编辑该文件后(重新)启动 Visual Studio。
感谢您对这个问题的讨论。 我可以报告它仍然存在于 Qt 5.8 / QT Extension for Windows Version 2.1.1 / Visual Studio 2015 中。症状是输入“$(QTDIR)\\bin”(Qt DLL 的位置)作为 PATH 文件夹VStudio 项目属性 Debugger...Environment 中的规范似乎有效,但实际上无效。
“似乎可以工作”我的意思是,如果您单击检查调试器环境属性的选项,并且环境属性的原始形式看起来像“PATH=$(QTDIR)\\bin;...;$(PATH) “ VStudio 编辑对话框将帮助您通知 PATH 字符串的计算结果为(例如)“PATH=D:\\TechApps\\Qt\\5.8\\msvc2015_64b\\bin;...”——就像 QTDIR 宏是一样的真正存在并具有正确的价值。 这是残酷的欺骗!
因为,“真的不起作用”是指从 VStudio 中启动 Qt 相关应用程序时实际准备使用的 PATH 没有看到这个宏。 你漂亮的 PATH 字符串被简化为“\\bin;...”。 您可以通过将 Qt DLL 从 $(QTDIR)\\bin 临时复制到应用程序可执行文件的文件夹中来确认这一点。 您的应用程序将正确启动。 如果你在你的程序中检查你的 PATH(例如在 c++ 中使用 getenv("PATH"),你会看到你的程序的 PATH 字符串缺少 QTDIR。(也就是说,如果 QTDIR 是空字符串,它会是什么) .)
FWIW,此问题的另一个症状是,如果您检查 VStudio 宏列表,$(QTDIR)不在列表中。
上述解决方案(重新排列 ...vcxproj.user 中的元素)似乎解决了该问题。 当您在该文件中更早地移动 QTDIR 的定义时,应用程序实际可用的 PATH 字符串是正确的,并且 $(QTDIR) 出现在 Visual Studio 已知的宏列表中。
但是,我不知道在 VStudio 中更改“Qt VS 工具”选项或“Qt 项目设置”是否会导致 .user 文件再次被错误地覆盖。
更改(或重新选择)解决方案中的 Qt 版本(更改解决方案 Qt 版本)为我解决了这个问题。
重新初始化项目花了很多时间,即使如此,我也不相信 .user 文件会在我构建项目之前更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.