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

Что вам нужно установить, чтобы использовать Clang для Windows для сборки С++ 14 для 64 бит?

UPDATE:

Я написал подробный учебник, в который вошли два лучших ответа на этот вопрос: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/



TL; DR

В Windows, учитывая следующую программу:

#include <iostream>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    for(auto el : arr)
    {
        std::cout << el << std::endl;
    }
    return 0;
}

Я хочу иметь возможность сделать следующее:

clang++ hello.cpp -o hello.exe -std=c++14

И получить 64-битный исполняемый файл, который просто работает. Я не хочу добавлять тонну -I, чтобы сообщить clang, где найти iostream или другие стандартные заголовки С++; Я не хочу связываться с несколькими шагами.

Мне не все равно о производительности, эффективности, использовании компоновщика и т.д. Я просто хочу иметь правильную настройку clang/gcc/any, чтобы я мог использовать один, быстрый и грязный, консольная команда, аналогичная приведенной выше.

Что мне нужно для установки, чтобы просто работать?


Проблема

Как преобладающий пользователь mac/linux, я привык к тому, что могу просто использовать диспетчер пакетов для установки последней версии clang, которая просто работает.

Теперь я пытаюсь настроить clang/gnu-компилятор на окна, и это кажется намного сложнее. Если только потому, что там нет простой документации (что я смог найти)

Я попытался следовать этому руководству: https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows - и смог использовать его, чтобы заставить clang строить и связывать (используя gcc 4.8.2), но результирующие двоичные файлы были 32 бит.

Я попытался установить последние предварительно созданные двоичные файлы clang (3.6.2) и 64-разрядную версию mingw-w64 (4.9.3 для 64 бит с posix и sjlj для исключений), и я получаю:

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

Что, по-видимому, указывает, что clang не видит файлы gcc. Кажется, что некоторые версии LLVM/clang ищут только определенные версии gcc, но это нигде не документировано?

Точно так же кто-то сказал мне в IRC LLVM, что вам нужно модифицировать драйвер clang для поиска gcc на определенных путях?


Что я ищу

Я в порядке с созданием LLVM/Clang из источника, если это необходимо, но я действительно ищу четкие пошаговые инструкции, которые позволяют мне использовать clang++ так же легко, как я могу это сделать с mac/linux

Что-то вроде:

  • Постройте this version LLVM/Clang и поместите его в that directory
  • Загрузите и установите this version из cygwin (или mingw32 или mingw-w64) и установите these packages.
  • и т.д..
4b9b3361

Ответ 1

если вы используете грядущий clang 3.7.0, просто установите PATH для включения bin mingw-w64, clang будет работать так, как вы ожидаете

Ответ 2

Попробуйте установить MSYS2, а затем установите пакет mingw-w64-x86_64-clang (двоичный):

pacman -S mingw-w64-x86_64-clang

Это немного устарело на данный момент (3.6.2), но это может быть достаточно для вас. Затем, когда вы запустите оболочку Win64, предоставленную MSYS2, clang будет на вашем пути.

Если это не так, я недавно создал 64-битную версию clang с MSYS2 и использовал ее для компиляции собственных 64-битных исполняемых файлов Windows. Мой процесс был примерно таким:

  • Используйте pacman для установки base-devel, mingw-w64-x86_64-ninja, mingw-x86_64-cmake и, возможно, некоторых других пакетов, необходимых для процесса сборки.
  • Grab мой PKGBUILD script для clang и файлов в том же каталоге. Это основано на пакете mingw-w64-clang-svn от MSYS2, который в значительной степени является работой Мартелла Мэлоуна. Вы можете найти его на канале IRS MSYS2 и спросить его об этом.
  • В оболочке Win64 перейдите в каталог с моим PKGDUILD, запустите export MINGW_INSTALLS=mingw64 (так что вы только компилируете 64-разрядную версию), а затем запустите makepkg-mingw.

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

Ответ 3

Вы можете установить LLVM предварительно бинарные дистрибутивы для Windows, здесь. MinGW-w64 можно скачать здесь. Конечно, вы должны убедиться, что пути правильно настроены.

Для последней версии clang, например, clang 6.0.0. Вышеупомянутое решение @user5271266 будет недостаточно. Теперь целевой целью для clang Windows является x86_64-pc-windows-msvc (предположим, что вы используете 64-битную Windows).

Для того, чтобы скомпилировать C++ исходные файлы, в соответствии с здесь, мы должны изменить цель:

clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe