c++ - Como digo ao CMake para usar o Clang no Windows?



build (1)

Eu tenho um projeto C ++ que cria usando CMake. Normalmente, uso o OSX, mas agora também estou tentando obter uma versão do Windows. Eu gostaria de usar o Clang no Windows por motivos de compatibilidade.

Instalei o binário Clang 3.8 pré-compilado do LLVM:

C:\Program Files\LLVM\bin\clang.exe
C:\Program Files\LLVM\bin\clang++.exe

Também está instalado no meu PATH:

>clang++
clang++.exe: error: no input files

Eu tenho duas perguntas:

  1. Como digo ao CMake para usar o clang++ quando chamo cmake --build ?
  2. Como posso verificar antes de criar com que compilador o CMake está configurado?

Você também precisa - além dos compiladores Clang - de um ambiente de construção / link para Windows.

As versões mais recentes do CMake 3.6 possuem vários ambientes integrados de criação Clang suportados no Windows (por exemplo, Visual Studio, Cygwin; consulte as Notas da versão ).

Acabei de executar um teste bem-sucedido com

Todos instalados em seus caminhos padrão com seus diretórios bin no ambiente PATH global.

A parte que você precisa saber é definir o conjunto de ferramentas correto com a opção de linha de comando CMake -T"LLVM-vs2014" . Durante o processo de configuração, o CMake informará qual compilador foi encontrado / utilizado.

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

project(HelloWorld)

file(
    WRITE main.cpp 
        "#include <iostream>\n"
        "int main() { std::cout << \"Hello World!\" << std::endl; return 0; }"
)
add_executable(${PROJECT_NAME} main.cpp)

Console do Windows

...> mkdir VS2015
...> cd VS2015
...\VS2015> cmake -G"Visual Studio 14 2015" -T"LLVM-vs2014" ..
-- The C compiler identification is Clang 3.9.0
-- The CXX compiler identification is Clang 3.9.0
-- Check for working C compiler: C:/Program Files (x86)/LLVM/msbuild-bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/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 (x86)/LLVM/msbuild-bin/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/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 - done
-- Configuring done
-- Generating done
-- Build files have been written to: .../VS2015
...\VS2015> cmake --build . 
Microsoft (R)-Buildmodul, Version 14.0.23107.0
[...]
...\VS2015> Debug\HelloWorld.exe
Hello World!

Dicas de instalação

Observe que eu adicionei o LLVM aos meus caminhos de pesquisa durante a instalação:

E você pode verificar os "Platform Toolsets" disponíveis na página de propriedades de qualquer projeto do VS:

Referências





clang