Как я могу сказать CMake использовать Clang на Windows?


У меня есть проект C++, который строится с использованием CMake. Обычно я строю на OSX, но теперь я пытаюсь получить версию Windows, которая тоже работает. Я хотел бы использовать Clang на Windows по соображениям совместимости.

Я установил предварительно скомпилированный двоичный файл Clang 3.8 из LLVM:

C:Program FilesLLVMbinclang.exe
C:Program FilesLLVMbinclang++.exe

Он также установлен на моем пути:

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

У меня есть два вопроса:

  1. Как я могу сказать CMake использовать clang++ , Когда я вызываю cmake --build?
  2. Как я могу проверить перед сборкой какой компилятор CMake настроен ли он?
1 17

1 ответ:

Вам также понадобится - в дополнение к самим компиляторам Clang-среда сборки/компоновки для Windows.

Последние сборки CMake 3.6 имеют несколько интегрированных поддерживаемых сред сборки Clang в Windows (например, Visual Studio, Cygwin; см.примечания к выпуску ).

Я только что провел успешный тест с

Все установленные по своим стандартным путям с их каталогами bin в глобальной среде PATH.

Часть, которую вам нужно знать, это установка правильного набора инструментов с помощью CMake -T"LLVM-vs2014" опция командной строки. Во время процесса настройки CMake сообщит вам, какой компилятор у него есть нашли/забрали.

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)

Консоль 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!

Подсказки По Установке

Обратите внимание, что я добавил LLVM в пути поиска во время настройки:

Установка LLVM с добавлением в путь

И вы можете перепроверить доступные "наборы инструментов платформы" на странице свойств любого проекта VS:

VS Project Properties-наборы инструментов платформы

Ссылки