Ninja generator passes -std option to clang-cl
When Ninja is targeting Clang's MSVC compatible tools (clang-cl), and you require a certain C++ version, it passes the -std
option, which Clang 3.8.1 does not accept.
For this example:
cmake_minimum_required(VERSION 3.6)
project(foo CXX)
add_executable(foo foo.cpp)
set_property(TARGET foo PROPERTY CXX_STANDARD "11")
set_property(TARGET foo PROPERTY CXX_STANDARD_REQUIRED TRUE)
int main() { auto i = 5; }
I get:
[1/2] Building CXX object CMakeFiles\foo.dir\foo.cpp.obj
FAILED: CMakeFiles/foo.dir/foo.cpp.obj
D:\LLVM\msbuild-bin\cl.exe /nologo /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 -std=gnu++11 /showIncludes /FoCMakeFiles\foo.dir\foo.cpp.obj /FdCMakeFiles\foo.dir\ -c foo.cpp
clang-cl.exe: error: unknown argument: '-std=gnu++11'
ninja: build stopped: subcommand failed.