[英]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.