在Visual Studio 2015或更高版本中,我们可以通过两种方式使用clang:
选择
Clang with Microsoft CodeGen
作为Platform Toolset
;- 醇>
安装
LLVM-3.8-win64.exe
,然后选择LLVM-vs2014
作为Platform Toolset
;
我知道这两种方法都使用相同的编译器:clang 3.8
。但是,我不知道它们之间有什么区别。
我的经验显示Clang with Microsoft CodeGen
比LLVM-vs2014
更友好地调试。换句话说:
我可以像VC ++一样逐步调试由
Clang with Microsoft CodeGen
构建的程序;- 醇>
由“LLVM-vs2014”构建的程序无法在源代码级别逐步调试,但程序可以按预期直接运行。
所以,我的问题是:
LLVM-vs2014
不支持Visual Studio下的源代码级调试吗?
Microsoft提供的Clang with Microsoft CodeGen
仅用于支持Visual Studio下的源代码级调试吗?
答案 0 :(得分:8)
我知道这两种方法都使用相同的编译器:clang 3.8。但是,我不知道它们之间有什么区别。
差异在于 他们如何使用它。
Clang with Microsoft CodeGen
正在使用Clang将解析源代码转换为AST。但是随后MSVC的代码生成器启动,因此不使用任何与LLVM相关的内容。
LLVM-vs2014
完全在每个编译阶段使用Clang。它使用LLVM生成代码。因此,难怪调试信息与Visual Studio所期望的不兼容。
重要的是要注意,它们都使用相同的运行时。 Clang具有clang-cl
模式,可以解析Microsoft标头并使用其语言扩展。
因此,主要区别在于中后期阶段。