Подтвердить что ты не робот

Как сообщить CMake использовать Clang в Windows?

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

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

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

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

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

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

  • Как сообщить CMake использовать clang++ при вызове cmake --build?
  • Как я могу проверить, до какого компилятора CMake настроено?
4b9b3361

Ответ 1

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

В последних сборниках CMake 3.6 есть несколько встроенных поддерживаемых сред Clang build в 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 с добавлением в PATH

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

VS Project Properties - Platform Toolsets

Ссылки