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

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

我正在尝试使用来自 Visual Studio 2017 构建工具(在 x64 系统上)的 Clang/C2 编译器构建一个简单的 'empty main' 应用程序。我已经按照建议启动了 ...\Microsoft Visual Studio17\BuildTools\VC\Auxiliary\Build\vcvars64.bat shell,但意识到它没有将路径添加到 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 分别调用编译器而不是链接器(即它不依赖于编译器调用链接器,而是直接调用 link.exe)

有人知道如何让 clang/c2 编译器正常工作吗?(以前我能做到同 Visual Studio 2015)

问题是 Clang 太笨了,无法在 Windows 中找到 link.exe,尽管它在 PATH 中。

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

cd "c:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\VC\Tools\ClangC2.10.25903\bin\HostX64"
mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\VC\Tools\MSVC.10.25017\bin\HostX64\x64\link.exe"

cd "c:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\VC\Tools\ClangC2.10.25903\bin\HostX86"
mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\VC\Tools\MSVC.10.25017\bin\HostX86\x86\link.exe"

以上解决方案是 hackish,可能需要管理员权限,并假定交联器与本地交联器兼容。