J'ai écrit un didacticiel détaillé qui intègre les deux principales réponses à cette question: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/
Sous Windows, 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 obtenez un exécutable 64 bits qui fonctionne tout simplement. Je ne veux pas avoir à ajouter une tonne de -I
pour indiquer à Clang où trouver iostream
ou d'autres en-têtes standard c ++; Je ne veux pas avoir à lier en plusieurs étapes.
Je me fiche de la performance, de l’efficacité, de l’éditeur de liens utilisé, etc. Je souhaite simplement pouvoir configurer correctement Clang/gcc/quel que soit le système de manière à pouvoir utiliser une seule commande de console, rapide et sale, telle que celui ci-dessus.
De quoi ai-je besoin pour que cela fonctionne que je travaille?
En tant qu'utilisateur principalement mac/linux, je suis habitué à pouvoir simplement utiliser un gestionnaire de paquets pour installer la dernière version de clang, qui ne fonctionne que.
J'essaie maintenant d'installer un compilateur clang/gnu sur Windows et cela semble être beaucoup plus difficile, ne serait-ce que parce qu'il y a peu de documentation, voire aucune, simple (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 j'ai pu l'utiliser pour me faire entendre pour construire et lier (en utilisant gcc 4.8.2), mais les fichiers binaires résultants étaient en 32 bits.
J'ai essayé d'installer les derniers binaires prédéfinis 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 suis obtenir:
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
Ce qui semble indiquer que Clang ne voit pas les fichiers de gcc. Il semble que certaines versions de LLVM/clang recherchent uniquement certaines versions de gcc, mais cela ne semble-t-il pas être documenté nulle part?
De même, quelqu'un sur le serveur LLVM IRC m'a dit qu'il fallait modifier le pilote de clang pour rechercher gcc dans certains chemins?
La construction de LLVM/Clang à partir des sources me convient parfaitement, mais je ne cherche que des instructions claires, étape par étape, qui me permettent d’utiliser clang++
aussi facilement que possible avec mac/linux.
Quelque chose comme:
this version
de LLVM/Clang et placez-le dans that directory
this version
de cygwin (ou mingw32 ou mingw-w64) et installez these packages
.si vous utilisez la prochaine version 3.7.0 de clang, configurez simplement PATH pour inclure le fichier bin de mingw-w64;
Essayez d’installer MSYS2 puis d’installer le paquetage mingw-w64-x86_64-clang (binaire):
pacman -S mingw-w64-x86_64-clang
Il est un peu vieux en ce moment (3.6.2), mais cela pourrait vous suffire. Ensuite, lorsque vous exécutez le shell Win64 fourni par MSYS2, clang
sera sur votre chemin.
Si cela ne suffit pas, je viens de créer une version 64 bits de clang avec MSYS2 et de l’utiliser pour compiler des exécutables Windows 64 bits natifs. Mon processus était quelque chose comme:
export MINGW_INSTALLS=mingw64
(pour ne compiler que la version 64 bits), puis exécutez makepkg-mingw
.Il est peu probable que tout soit correct du premier coup, et il peut être nécessaire de modifier certains fichiers. Clang a peut-être changé depuis la dernière fois et certains correctifs peuvent ne pas s'appliquer correctement.
Vous pouvez installer la version préliminaire binaire de llvm pour Windows ici . MinGW-w64 peut être téléchargé ici . Bien sûr, vous devez vous assurer que les chemins sont correctement configurés.
Pour la dernière version de clang, par exemple, clang 6.0.0
. La solution ci-dessus de @ user5271266 ne sera pas suffisante. Désormais, la cible par défaut de Windows Clang est x86_64-pc-windows-msvc
(supposons que vous utilisez Windows 64 bits).
Afin de compiler les fichiers sources C++, selon ici , nous devrions changer la cible:
clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe