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

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

На конференции Going Native на прошлой неделе Чандлер Каррут объявил о существовании готовых двоичных файлов для запуска clang на окнах. Та же информация содержится в сообщении в блоге здесь. Предполагаемая аудитория для этого - пользователи 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, где искать стандартные заголовки библиотек, мне придется сказать это где искать библиотеки для связи. Может кто-нибудь пройти меня через настройку шаг за шагом или указать мне на такое прохождение?

4b9b3361

Ответ 1

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

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

Инструменты сборки VС++

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

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

Переменные среды

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

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

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

Run

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

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

В качестве ярлыка вы можете запустить командную строку Visual С++ вместо 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. Кланг попробует оба, предпочитая VCINSTALLDIR.

Установите VCINSTALLDIR в %VS140COMNTOOLS%../../VC или добавьте %VS140COMNTOOLS%../../VC/bin/amd64 в PATH.

Сноска

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

Ответ 2

Clang on Windows - это работа, и Чандлер Каррут сказал в своем разговоре Going Native о том, что iostreams была одной из вещей, которые в настоящее время не работают.

Ответ 3

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

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

Alternative

См. Блог Arvid Gerstmann: использование clang в Windows.

Ссылки