如何从命令行使用 Visual Studio 2017 Codegen ClangC2?

How to use Visual Studio 2017 Codegen ClangC2 from command line?

本文关键字:2017 Studio Codegen ClangC2 Visual 命令行      更新时间:2023-10-16

我正在尝试使用Visual Studio 2017 Build Tools(在x64系统上)的Clang/C2编译器构建一个简单的'空主'应用程序。我已经按照建议启动了...Microsoft Visual Studio2017BuildToolsVCAuxiliaryBuildvcvars64.batshell,但意识到它不会将路径添加到 clang.exe 编译器,因此clang不可用。手动添加了路径(x64 托管版本),因此也可以调用clang

尝试使用简单的空主函数体构建最简单的程序会导致以下错误:

clang hello.cc -o hello.exe
error: failed to load c2 (file not found)

c2.dll 是 Clang 应该拉入链接的 MS 链接器,但似乎找不到它。

我尝试从 IDE 本身构建相同的程序,它显然是成功的,因为 IDE 单独调用编译器而不是链接器(即它不依赖编译器调用链接器,而是直接调用链接.exe)

有谁知道如何让 clang/c2 编译器变成一个工作形状?(以前我能够在Visual Studio 2015中做同样的事情)

问题是 Clang 太愚蠢了,无法在 Windows 中找到链接.exe,尽管它在PATH中。

解决方案是使用MKLINK命令在clang.exe可执行文件旁边创建符号链接.exe链接:

cd "c:Program Files (x86)Microsoft Visual Studio2017BuildToolsVCToolsClangC214.10.25903binHostX64"
mklink link.exe "c:Program Files (x86)Microsoft Visual Studio2017BuildToolsVCToolsMSVC14.10.25017binHostX64x64link.exe"
cd "c:Program Files (x86)Microsoft Visual Studio2017BuildToolsVCToolsClangC214.10.25903binHostX86"
mklink link.exe "c:Program Files (x86)Microsoft Visual Studio2017BuildToolsVCToolsMSVC14.10.25017binHostX86x86link.exe"

上述解决方案是黑客的,可能需要管理员权限,并假设交联剂与本机交联剂兼容。