【问题标题】:cmake ninja clang windows fails helloworldcmake ninja clang windows 失败 helloworld
【发布时间】:2023-05-27 14:29:01
【问题描述】:

遵循here 的构建说明,但我有更新版本的工具。

cmake(3.6.1)、ninja(1.7.1)、vs-studio 社区 2015

clang version 3.8.1 (branches/release_3
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

我注意到步骤Detecting CXX compile features 失败。为了简洁起见,我只包括了大约 20 个错误中的第一个。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(helloworld)
add_executable(${PROJECT_NAME} main.cpp)

main.cpp

#include <iostream>

int main(int argc, char *argv[])
{
   std::cout << "Hello World\n";
   return 0;
}

打开一个 VS2015 x64 Native Tools 命令提示符

>> set PATH=C:\Program Files\LLVM\msbuild-bin;%PATH%
>> set INCLUDE=C:\Program Files\LLVM\lib\clang\3.8.1\include;%INCLUDE%
>> cmake -G "Ninja" ..
-- The C compiler identification is Clang 3.8.1
-- The CXX compiler identification is Clang 3.8.1
-- Check for working C compiler: C:/Program Files/LLVM/msbuild-bin/cl.exe
-- Check for working C compiler: C:/Program Files/LLVM/msbuild-bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/LLVM/msbuild-bin/cl.exe
-- Check for working CXX compiler: C:/Program Files/LLVM/msbuild-bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - failed
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/griffic/src/helloworld/ninjabuild

>> ninja
C:\PROGRA~1\LLVM\MSBUIL~1\cl.exe   /nologo   /DWIN32 /D_WINDOWS /W3 /GR /EHsc /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /FoCMakeFiles\helloworld.dir\main.cpp.obj /FdCMakeFiles\helloworld.dir\ -c ..\main.cpp
In file included from ..\main.cpp:1:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\iostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\istream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ostream:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\ios:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocnum:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\cmath:647:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xtgmath.h:8:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xtr1common(213,22) :  error: use of undeclared identifier 'char16_t'
        struct _Is_integral<char16_t>
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xtr1common(219,22) :  error: use of undeclared identifier 'char32_t'
        struct _Is_integral<char32_t>

【问题讨论】:

    标签: windows cmake clang ninja


    【解决方案1】:

    我获取了 4.0 Windows 快照here,它对我来说适用于 helloworld。不幸的是,它在包含gtest 使用的稍大的测试程序上失败了。

    但我没有设置路径,而是执行以下操作以使用 4.0 快照创建 helloworld 函数。

    打开 VS2015 x64 Native Tools 命令提示符

    >> set CC=clang-cl
    >> set CXX=clang-cl
    >> cmake -G "Ninja" ..
    >> ninja
    

    【讨论】: