Как запустить clang из командной строки в Windows?

На прошлой неделе на конференции Going Native Чендлер Кэррут объявил о существовании готовых двоичных файлов для запуска clang на windows. Та же информация есть в сообщении в блоге Вот. Целевой аудиторией для этого являются пользователи Visual Studio, но я хочу запустить clang из командной строки.

Я запустил установщик и добавил LLVM bin каталог к ​​моему пути, но когда я пытаюсь скомпилировать «Hello world», я получаю это:

C:\>clang hello.cpp
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.

Я не могу найти какую-либо информацию о том, как настроить Clang для работы в Windows, и я предполагаю, что после того, как я выясню, как указать Clang, где искать стандартные заголовки библиотеки, мне придется указать, где искать для библиотек, чтобы связаться с. Может ли кто-нибудь шаг за шагом провести меня через установку или указать мне на такое прохождение?

16

Решение

Это старый вопрос, и с тех пор многое изменилось. Учитывая, что это обычная проблема при использовании Clang в Windows, он заслуживает обновленного ответа.

Начиная с 2017 года, для сборки LLVM 3.9.1 для Windows требуется следующее, чтобы иметь возможность вызывать clang из твоей раковины.

У нас до сих пор нет порта libc ++ для Windows, поэтому Clang использует библиотеки VC ++, а также компоновщик VC ++.

Итак, прежде всего вам нужно Инструменты сборки VC ++ в вашей системе. Обратите внимание, что они уже установлены, если у вас есть IDE Visual C ++.

Вы должны указать Clang, где найти инструменты для сборки и его библиотеки.

Вариант 1 (vcvarsall.bat)

Это самый простой и стандартный вариант.

Бежать

> "%VS140COMNTOOLS%../../VC/vcvarsall.bat" amd64

Замена amd64 с вашей целевой архитектурой на Clang, которая может быть x86, amd64 или же arm, Вы можете заменить %VS140COMNTOOLS% а также, если у вас есть другая версия набора инструментов VC ++.

В качестве ярлыка вы можете запустить командную строку Visual C ++ вместо cmd+vcvarsall, так как вам нужно вызывать этот пакет для каждой командной строки, которую вы открываете.

Теперь вы можете наслаждаться Clang.

Вариант 2 (вручную)

Если вы не можете бежать vcvarsall.bat или хотите автоматизировать этот процесс, добро пожаловать, у меня была такая же потребность.

Все следующие переменные окружения устанавливаются автоматически vcvarsall.bat, так что вы можете запустить это и взять значения вашей машины оттуда. Я приведу мины в качестве примеров, и в надежде, что это то же самое в другом месте.

Установить INCLUDE переменная среды для C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;

Задавать LIB в C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64;, Обратите внимание на специфические компоненты архитектуры!

Для инструментов сборки, вы можете иметь инструменты на PATH или настроить VCINSTALLDIR переменная окружения. Clang попробует оба, одобряя VCINSTALLDIR,

Задавать VCINSTALLDIR в %VS140COMNTOOLS%../../VC или добавить %VS140COMNTOOLS%../../VC/bin/amd64 на ваш PATH,

Все это очень плохо документировано, поэтому требования могут измениться в любое время, но Clang MSVC водитель пытается максимально автоматизировать это, запрашивая реестр Windows и многие другие приемы, поэтому в будущем больше ничего из этого может не понадобиться.

7

Другие решения

С Clang для Windows 5.0.0 (64 бит) и Visual Studio 2017 Community Edition или Build Tools, установленные в их путях установки по умолчанию (включая последний / соответствующий Windows SDK):

C:\>clang --version
clang version 5.0.0 (tags/RELEASE_500/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

Я сделал хороший опыт, используя clang-cl (clang-cl.exe == clang.exe --driver-mode=cl) который находит все необходимое msvc библиотека / включить зависимости автоматически:

C:\>clang-cl hello.cpp

Или скомпилировать как 32- или 64-битное приложение:

C:\>clang-cl -m32 hello.cpp
C:\>clang-cl -m64 hello.cpp

альтернатива

Увидеть Блог Арвида Герстманна: Использование clang в Windows.

Рекомендации

1

Если вы не ограничены в использовании компиляторов Microsoft. Вы можете использовать Clang с MinGW-W64. Просто установите последнюю версию бинарный файл для Windows а также MinGW-w64.

Вы можете использовать следующий код для компиляции вашего исходного файла

clang++ -target x86_64-pc-windows-gnu test.cc -o test.exe
1
По вопросам рекламы [email protected]