5

在编写时,clang 在他们的 Visual Studio 用户手册中有这个文档:

cmake -G"Visual Studio 2017" -T LLVM ..

这行不通。

我从 cmake 收到一条错误消息:

CMake Error at CMakeLists.txt:3 (project):
  Failed to run MSBuild command:

    C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe

  to get the value of VCTargetsPath:

    Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET Framework
    Copyright (C) Microsoft Corporation. All rights reserved.

    Build started 10/3/2020 5:06:06 PM.
    Project "D:\Github\glfw\build\CMakeFiles\3.18.1\VCTargetsPath.vcxproj" on node 1 (default targets).
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(411,5): error MSB8020: The build tools for LLVM99 (Platform Toolset = 'LLVM99') cannot be found. To build using the LLVM99 build tools, please install LLVM99 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [D:\Github\glfw\build\CMakeFiles\3.18.1\VCTargetsPath.vcxproj]
    Done Building Project "D:\Github\glfw\build\CMakeFiles\3.18.1\VCTargetsPath.vcxproj" (default targets) -- FAILED.

    Build FAILED.

    "D:\Github\glfw\build\CMakeFiles\3.18.1\VCTargetsPath.vcxproj" (default target) (1) ->
    (PrepareForBuild target) ->
on, and then selecting "Retarget solution". [D:\Github\glfw\build\CMakeFiles\3.18.1\VCTargetsPath.vcxproj]

        0 Warning(s)
        1 Error(s)

    Time Elapsed 00:00:00.11


  Exit code: 1



-- Configuring incomplete, errors occurred!
See also "D:/Github/glfw/build/CMakeFiles/CMakeOutput.log".
4

2 回答 2

11

这不适用于 VS2019。在 vs2019 中,您必须将工具集指定为ClangCL。据我所知,此更改没有记录在任何地方。我只能通过反复试验来解决这个问题。

cmake -G"Visual Studio 2019" -T ClangCL ..

这是您将获得的输出。

PS D:\Github\glfw> cmake -S . -B build -T ClangCl
-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19041.
-- The C compiler identification is Clang 10.0.0 with MSVC-like command-line
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/Llvm/x64/bin/clang-cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE  
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Using Win32 for window creation
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Github/glfw/build

这是它的样子:

在此处输入图像描述

编辑:

您也可以像这样手动设置工具集:

# Must be called before project call
set(CMAKE_GENERATOR_TOOLSET "ClangCL")

project(FOOBAR
    LANGUAGES "CXX"
)
于 2020-10-03T21:18:57.563 回答
1

正如https://cmake.org/cmake/help/v3.18/manual/cmake.1.html中提到的

-T <toolset-spec>

    Toolset specification for the generator, if supported.

Visual 2017 不支持 Clang/LLVM:
https ://docs.microsoft.com/cpp/build/clang-support-msbuild?view=vs-2017

对于视觉 2019,您需要使用clang-cl. https://docs.microsoft.com/cpp/build/clang-support-msbuild?view=vs-2019

如果您想查看支持的生成器:
https ://cmake.org/cmake/help/v3.18/manual/cmake-generators.7.html

于 2020-10-04T14:32:19.820 回答