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

обновление:

я написал подробный учебник, который включает в себя два лучших ответа на этот вопрос: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 или другие стандартные заголовки c++; я не хочу связываться несколькими шагами.

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

что мне нужно установить для этого просто работать?


Проблема

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

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

я пытался следовать этому руководству: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 для исключений), и am получение:

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

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

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


то, что я ищу

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

что-то типа:

  1. построить this version LLVM / Clang и поместите его в that directory
  2. скачать и установить this version cygwin (или mingw32 или mingw-w64) и установить these packages.
  3. etc..

3 ответов


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


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

pacman -S mingw-w64-x86_64-clang

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

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

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

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


вы можете установить LLVM pre-release binary для 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