Que devez-vous installer pour utiliser Clang sur windows pour construire c++14 pour 64 bits?

mise à jour:

j'ai écrit un tutoriel détaillé qui intègre les deux premières réponses à cette question: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/




TL; DR

sous Windows, étant donné le programme suivant:

#include <iostream>

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

je veux pouvoir faire ce qui suit:

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

et obtenir un exécutable 64 bits que fonctionne juste . Je ne veux pas avoir à ajouter une tonne de -I inclut pour dire clang où trouver iostream ou d'autres headers C++ standard; Je ne veux pas avoir à lier en plusieurs étapes.

Je ne me soucie pas tant de la performance, de l'efficacité, de ce que le linker est utilisé, etc. Je veux juste être capable d'avoir clang/gcc/quoi que ce soit qui se configure correctement donc que je peux utiliser une seule commande de console, rapide et sale, comme celle ci-dessus.

Que dois-je installer pour que fonctionne ?


Le Problème

en tant qu'utilisateur principalement mac/linux, je suis habitué à pouvoir utiliser un gestionnaire de paquets pour installer la dernière version de clang, qui fonctionne tout simplement .

j'essaie maintenant mettre en place clang / gnu compilateur sous windows et cela semble beaucoup plus difficile, ne serait-ce que parce qu'il y a peu ou pas de documentation simple là-bas (que j'ai pu trouver)

j'ai essayé de suivre ce tutoriel: https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows - et a été capable de l'utiliser pour obtenir clang pour construire et relier (en utilisant gcc 4.8.2), mais les binaires résultants étaient de 32 bits.

j'ai essayé d'installer les derniers binaires prebuilt de clang ( 3.6.2 ) et la version 64 bits de mingw-w64 ( 4.9.3 pour 64 bits avec posix et sjlj pour les exceptions ), et je reçois:

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

qui semble indiquer que clang ne voit pas les fichiers de gcc. Il semble que certaines versions de LLVM / clang ne cherchent que certaines versions de gcc, mais cela ne semble être documenté nulle part?

de même quelqu'un m'a dit sur le LLVM IRC que vous devez modifier le pilote de clang pour chercher gcc dans certains chemins?


Ce que je suis à la recherche de

je suis d'accord avec la construction LLVM / Clang à partir de la source si nécessaire, mais je suis vraiment à la recherche d'instructions claires, étape par étape qui me permettent d'utiliser clang++ aussi facilement que je suis en mesure de le faire avec mac/linux

Quelque chose comme:

  1. Construire this version de LLVM/Clang et le placer dans that directory
  2. télécharger et installer this version de cygwin (ou mingw32 ou mingw-w64) et installer these packages .
  3. etc..
41
demandé sur Johannes 2015-08-27 04:11:58

3 réponses

si vous utilisez le clang 3.7.0 à venir, définissez simplement PATH pour inclure la bin de mingw-w64, clang fonctionnera comme vous l'attendez

9
répondu user5271266 2015-08-27 05:27:05

essayez d'installer MSYS2 puis d'installer le paquet (binaire) mingw-w64-x86_64-clang:

pacman -S mingw-w64-x86_64-clang

Il est un peu vieux pour le moment (3.6.2), mais il pourrait être assez bon pour vous. Ensuite, lorsque vous exécutez le shell Win64 fourni par MSYS2, clang sera sur votre chemin.

si ce n'est pas suffisant, j'ai récemment construit une version 64-bit de clang avec MSYS2 et de l'utiliser pour compiler Windows 64-bit natif les fichiers exécutables. Mon procédé était quelque chose comme:

  1. utilisez pacman pour installer base-devel, mingw-w64-x86_64-ninja, mingw-x86_64-cmake et peut-être d'autres paquets qui sont nécessaires au processus de construction.
  2. Saisir mon PKGBUILD script pour clang et les fichiers dans le même répertoire . Ceci est basé sur le paquet mingw-w64-clang-svn de MSYS2, qui est en grande partie le travail de Martell Malone. Vous vous pouvez le trouver sur le canal IRC MSYS2 et lui demander plus d'informations à ce sujet.
  3. dans un Win64, shell, allez dans le répertoire avec mon PKGDUILD, Lancez export MINGW_INSTALLS=mingw64 (donc vous compilez uniquement la version 64 bits), puis lancez makepkg-mingw .

Il est peu probable que vous obtiendrez tout droit sur le premier essai, et certains fichiers peuvent être adaptés. Clang mai ont changé depuis la dernière fois que je l'ai fait et certains patches pourraient ne pas s'appliquer proprement.

12
répondu David Grayson 2015-08-27 01:21:13

vous pouvez installer llvm pré-release binaire Pour Windows ici . MinGW-w64 peut être téléchargé ici . Bien sûr, vous devez vous assurer que les chemins sont correctement mis en place.

pour la dernière version de clang, p.ex. clang 6.0.0 . La solution ci-dessus par @user5271266 ne sera pas suffisante. Maintenant, la cible par défaut pour clang Windows est x86_64-pc-windows-msvc (supposons que vous utilisez des fenêtres 64 bits).

afin de compilez les fichiers source C++, Selon ici , nous devrions changer la cible:

clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe
0
répondu jdhao 2018-03-29 10:16:11