На прошлой неделе на конференции 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, где искать стандартные заголовки библиотеки, мне придется указать, где искать для библиотек, чтобы связаться с. Может ли кто-нибудь шаг за шагом провести меня через установку или указать мне на такое прохождение?
Это старый вопрос, и с тех пор многое изменилось. Учитывая, что это обычная проблема при использовании Clang в Windows, он заслуживает обновленного ответа.
Начиная с 2017 года, для сборки LLVM 3.9.1 для Windows требуется следующее, чтобы иметь возможность вызывать clang
из твоей раковины.
У нас до сих пор нет порта libc ++ для Windows, поэтому Clang использует библиотеки VC ++, а также компоновщик VC ++.
Итак, прежде всего вам нужно Инструменты сборки VC ++ в вашей системе. Обратите внимание, что они уже установлены, если у вас есть IDE Visual C ++.
Вы должны указать Clang, где найти инструменты для сборки и его библиотеки.
Это самый простой и стандартный вариант.
Бежать
> "%VS140COMNTOOLS%../../VC/vcvarsall.bat" amd64
Замена amd64
с вашей целевой архитектурой на Clang, которая может быть x86
, amd64
или же arm
, Вы можете заменить %VS140COMNTOOLS%
а также, если у вас есть другая версия набора инструментов VC ++.
В качестве ярлыка вы можете запустить командную строку Visual C ++ вместо cmd+vcvarsall
, так как вам нужно вызывать этот пакет для каждой командной строки, которую вы открываете.
Теперь вы можете наслаждаться Clang.
Если вы не можете бежать 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 и многие другие приемы, поэтому в будущем больше ничего из этого может не понадобиться.
С 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.
Рекомендации
Если вы не ограничены в использовании компиляторов Microsoft. Вы можете использовать Clang с MinGW-W64. Просто установите последнюю версию бинарный файл для Windows а также MinGW-w64.
Вы можете использовать следующий код для компиляции вашего исходного файла
clang++ -target x86_64-pc-windows-gnu test.cc -o test.exe