¿Cómo le digo a CMake que use Clang en Windows?

Tengo un proyecto de C ++ que se crea con CMake. Normalmente construyo sobre OSX pero ahora estoy tratando de hacer que funcione una versión de Windows. Me gustaría usar Clang en Windows por razones de compatibilidad.

Instalé el binario Clang 3.8 precomstackdo de LLVM:

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

También está instalado en mi PATH:

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

Tengo dos preguntas:

  1. ¿Cómo le digo a CMake que use clang++ cuando llamo a cmake --build ?
  2. ¿Cómo puedo verificar antes de construir con qué comstackdor CMake está configurado?

También necesita, además de los comstackdores de Clang, un entorno de comstackción / enlace para Windows.

Las últimas comstackciones de CMake 3.6 tienen varios entornos de comstackción de Clang admitidos en Windows (por ejemplo, Visual Studio, Cygwin, ver Notas de la versión ).

Acabo de realizar una prueba exitosa con

Todos instalados en sus rutas estándar con sus directorios bin en el entorno PATH global.

La parte que necesita saber es establecer el conjunto de herramientas correcto con la opción de línea de comando CMake -T"LLVM-vs2014" . Durante el proceso de configuración, CMake le informará qué comstackdor ha encontrado / tomado.

CMakeLists.txt

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

Consola de 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! 

Sugerencias de instalación

Tenga en cuenta que he agregado LLVM a mis rutas de búsqueda durante la configuración:

Instalación de LLVM con Agregar a PATH

Y puede verificar de forma cruzada los "Conjuntos de herramientas de plataforma" disponibles en la página de propiedades de cualquier proyecto de VS:

Propiedades del proyecto VS - Platform Toolsets

Referencias

  • ¿Cuál es la definición de -D para decirle a Cmake dónde encontrar nmake?
  • Enlazador para Clang?
  • Alternar entre GCC y Clang / LLVM utilizando CMake