web-dev-qa-db-fra.com

Comment dire à CMake d'utiliser Clang sous Windows?

J'ai un projet C++ qui se construit à l'aide de CMake. Je construis généralement sur OSX, mais maintenant j'essaie de faire fonctionner une version Windows aussi. Je souhaite utiliser Clang sous Windows pour des raisons de compatibilité.

J'ai installé le binaire Clang 3.8 précompilé de LLVM:

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

Il est également installé sur mon PATH:

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

J'ai deux questions:

  1. Comment dire à CMake d'utiliser clang++ quand j'appelle cmake --build?
  2. Comment puis-je vérifier avant de construire avec quel compilateur CMake est configuré?
24
sdgfsdh

Vous avez également besoin - en plus des compilateurs Clang lui-même - d'un environnement de génération/liaison pour Windows.

Les dernières versions de CMake 3.6 ont plusieurs environnements de génération Clang pris en charge intégrés sur Windows (par exemple Visual Studio, Cygwin; voir Notes de version ).

Je viens de réussir un test avec

Tous installés dans leurs chemins d'accès standard avec leurs répertoires bin dans l'environnement global PATH.

La partie que vous devez savoir est de définir le bon ensemble d'outils avec le CMake -T"LLVM-vs2014" Option de ligne de commande. Pendant le processus de configuration, CMake vous fera savoir quel compilateur il a trouvé/pris.

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

Conseils d'installation

Veuillez noter que j'ai ajouté LLVM à mes chemins de recherche lors de la configuration:

LLVM Installation with Add to PATH

Et vous pouvez recouper les "Platform Toolsets" disponibles dans la page de propriétés de n'importe quel projet VS:

VS Project Properties - Platform Toolsets

Références

35
Florian