我试图找出为什么Intel Compiler 18.0
,已安装after我的 Visual Studio 2017 安装使用的头文件MSVC
,而不是它自己的(因为它会导致错误)。
一个简单的#include <vector>
在 Visual Studio 中的 C++ 项目中编译时,在空翻译单元中触发此错误
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\type_traits(1562): error : expected a ">"
1> _INLINE_VAR constexpr bool _Is_specialization_v<_Template<_Types...>, _Template> = true;
只是为了确定,为什么它使用MSVC
无论如何包括?重新安装并没有导致任何变化。我根本不明白为什么会导致这个问题。有任何想法吗?
关于您收到的错误消息:
我认为您遇到了同样的问题this one https://developercommunity.visualstudio.com/content/problem/316602/intel-c-fails-to-compile-type-traits.html,大多数时候这个问题是由不兼容之间Intel Parallel Studio XE version
and VS version
。就像我在你的建议中那样另一个线程 https://stackoverflow.com/questions/58253760/intel-compiler-18-0-toolset-raises-exception-with-msbuild,您需要安装更高版本的Intel Parallel Studio XE版本才能解决该问题。
只是为了确定,为什么它使用 MSVC 包含呢? A
重新安装并没有导致任何变化。我简直想不通
出来,为什么会导致这个问题。有任何想法吗?
英特尔 C++ 编译器是 VS 的扩展。你可以检查一下Tools=>Extensions and Updates
:
同意Adrian's I don't think Intel would want to 'take ownership' of MFC
。对于一个简单的C++项目,如果我们设置Intel C++编译器作为其编译器,后面到底会发生什么呢?让我们看看项目文件(xx.vcxproj):
它设置了<PlatformToolset>Intel C++ Compiler 19.0</PlatformToolset>
,并可能对xx.vcxproj
,但该项目仍然有这样的定义<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
, <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
在其项目文件中。
做一些属性,关于MSVC的定义仍然会在构建过程中导入。这就是为什么您收到的错误消息包含MSVC
...
Note:
MSbuild https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2019是VS的构建引擎,它读取的内容xx.vcxproj
编译并构建项目。
有许多任务、属性、正常 C++ 构建过程的项目在导入的目标文件中定义,例如Microsoft.Cpp.Default.props
,$(VCTargetsPath)\Microsoft.Cpp.targets
等等。
When we right-click project=>Intel Compiler=>Use Intel C++
,它更改了 platformToolSet 设置,但仍然导入 xx.cpp.targets 作为构建过程的一部分。因此您可以看到有关 MSVC 的错误消息或构建输出中的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)