"Clang with Microsoft CodeGen"和"LLVM-vs2014"有什么区别?

xml*_*lmx 7 c++ debugging llvm clang visual-studio

在Visual Studio 2015或更高版本中,我们可以通过两种方式使用clang:

  1. 选择Clang with Microsoft CodeGenPlatform Toolset;

  2. 安装LLVM-3.8-win64.exe,并选择LLVM-vs2014作为Platform Toolset;

我知道这两种方法都使用相同的编译器:clang 3.8.但是,我不知道它们之间有什么区别.

我的经验显示Clang with Microsoft CodeGen比调试更友好LLVM-vs2014.换一种说法:

  1. 我可以Clang with Microsoft CodeGen像VC++一样逐步调试一个程序;

  2. 由"LLVM-vs2014"构建的程序无法在源级别逐步调试,但程序可以按预期直接运行.

所以,我的问题是:

难道LLVM-vs2014不支持的Visual Studio在源代码级调试?

Clang with Microsoft CodeGen由微软只为Visual Studio支持下的源代码级调试提供?

arr*_*owd 9

我知道这两种方法都使用相同的编译器:clang 3.8.但是,我不知道它们之间有什么区别.

不同之处在于他们如何使用它.

Clang with Microsoft CodeGen正在使用Clang 将源解析为AST.但随后MSVC的代码生成器启动,因此不使用任何与LLVM相关的内容.

LLVM-vs2014在每个编译阶段都充分使用Clang.它使用LLVM生成代码.因此,难怪调试信息与Visual Studio所期望的不兼容.

值得注意的是,它们都使用相同的运行时.Clang具有clang-cl模式,使其能够解析Microsoft标头并使用其语言扩展.

因此,主要区别在于中后期阶段.