$QTDIR 指的是 Visual Studio 中的错误目录

kyb*_*kyb 4 c++ qt visual-studio

我刚遇到一个问题,又花了几个小时。
我有一个依赖于Qt. 我刚刚安装了 Qt 5.9.1 但错误:

E1696   cannot open source file "QDir"  Logger  \Logger.cpp 3   
E1696   cannot open source file "QFile" Logger  \Logger.cpp 4   
E1696   cannot open source file "QString"   Logger  \Logger.cpp 5   
E1696   cannot open source file "QStringBuilder"    Logger  \Logger.cpp 6   
E1696   cannot open source file "QDateTime" Logger  c\Logger.cpp    7   
E1696   cannot open source file "QMessageBox"   Logger  \Logger.cpp 8   
E1696   cannot open source file "QApplication"  Logger  \Logger.cpp 9   
Run Code Online (Sandbox Code Playgroud)

仍然出现。为什么?

我尝试$(QTDIR)Properties Pages 中使用变量将 include 文件夹添加到项目中。但它不是指我安装 Qt 的目录。

kyb*_*kyb 5

QTDIR not found error building project in MSVC ( this answer ) 我知道问题出在*.vcxproj.user.


解决方案1。

在解决方案中查找所有<QTDIR>键的所有值*.vcxproj.user。例如使用正则表达式

<QTDIR>.*</QTDIR>
Run Code Online (Sandbox Code Playgroud)

并用适当的 Qt 目录替换它们,即:

<QTDIR>C:\\Qt\\Qt5.9.1\\5.9.1\\msvc2017_64</QTDIR>
Run Code Online (Sandbox Code Playgroud)

double\\用于正则表达式。如果没有使用正表达式,写单个\


解决方案 2. 由于其便携性更好

QTDIR手动设置环境变量(对于当前用户):

> setx QTDIR "C:\Qt\Qt5.9.1\5.9.1\msvc2017_64"
Run Code Online (Sandbox Code Playgroud)

我认为这必须由 Qt 安装程序完成。你也可能喜欢setx /m
接下来,您应该从文件中删除或重命名所有<QTDIR>*.vcxproj.user。或者完全删除这些文件。

完毕。享受构建项目的乐趣。可能需要重新启动 MS VS。


笔记

*.vcxproj.user文件不应该被转移到其它机器/环境中,它们属于当前系统cinfiguration。因此,将它们从您的存储库中排除,即.gitignore


可能的解决方案 3

使用Qt Visual Studio 工具扩展。我没有测试这个。