【问题标题】:How to use Clang compiler with MSBuild?如何在 MSBuild 中使用 Clang 编译器?
【发布时间】:2015-06-10 16:08:27
【问题描述】:

我正在尝试使用通常在 Windows 上使用 Microsoft C++ 编译的几个项目,并改为使用 clang 编译它们。

从好的方面来说,存在 clang-cl.exe,它旨在替代 cl.exe。但是,即使我将clang-cl.exe作为cl.exe复制到当前目录,msbuild在某些情况下仍然会调用微软的cl.exe。

有没有办法告诉 msbuild '在这里,当执行任务 CL 时,使用这个 cl.exe 而不是通常的那个'? msbuild 的命令行选项不包含任何明显的方向。

另外,有没有办法告诉它在不更改项目文件的情况下为 cl 提供或覆盖命令行参数?

【问题讨论】:

    标签: visual-studio msbuild clang


    【解决方案1】:

    这很容易从命令行或项目文件中完成。您需要配置的属性是$(CLToolExe)$(CLToolPath)

    从命令行:

    msbuild MyProj.vcxproj /p:CLToolExe=clang-cl.exe /p:CLToolPath=c:\whatever\path\to\the\tool
    

    或者,在您的 .vcxproj 文件中:

    <PropertyGroup>
      <CLToolExe>clang-cl.exe</CLToolExe>
      <CLToolPath>c:\whatever\path\to\the\tool</CLToolPath>
    </PropertyGroup>
    

    如果你是在你的 .vcxproj 文件中直接调用任务 CL,而不是仅仅依赖公共目标,只需设置 CL 任务的相应参数 ToolExeToolPath

    【讨论】:

      【解决方案2】:

      自 Visual Studio 2019 16.2 起,Microsoft 提供了 MSbuild 和 ClangCl 的集成。所以这可以通过以下方式实现:

      • 安装“C++ Clang Tools for Windows”组件
      • 在 IDE 中选择“LLVM (clang-cl)”工具集

      微软的博文对此有更多信息:https://devblogs.microsoft.com/cppblog/clang-llvm-support-for-msbuild-projects/

      【讨论】:

        【解决方案3】:

        我曾经使用过@seva 解决方案,但在 Visual Studio 版本 16.10.1 中,它仅在命令行参数中省略“CL”前缀时才对我有效。即:

        msbuild MyProj.vcxproj /p:ToolExe=clang-cl.exe /p:ToolPath=c:\whatever\path\to\the\tool
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-27
          • 1970-01-01
          • 1970-01-01
          • 2021-04-05
          • 2011-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多