De quoi avez-vous besoin d'installer d'utiliser Clang sur windows pour construire c++14 pour la version 64 bits?
Mise à JOUR:
J'ai écrit un tutoriel détaillé qui intègre les deux réponses à cette question: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/
TL;DR
Sur 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 être en mesure de faire ce qui suit:
clang++ hello.cpp -o hello.exe -std=c++14
Et d'obtenir un 64 bit exécutable qui fonctionne, tout simplement. Je ne veux pas avoir à ajouter une tonne de -I
comprend à dire clang où trouver iostream
ou un autre standard c++ en-têtes; je ne veux pas avoir de lien en plusieurs étapes.
Je n'aime pas tellement parler de performance, d'efficacité, ce linker est utilisé, etc. Je veux juste être en mesure d'avoir clang/gcc/quel que soit mis en place correctement, de sorte que je peux utiliser un simple, rapide et sale, la console de commande comme ci-dessus.
Que dois-je installer pour que travail juste?
Le Problème
Comme principalement mac/linux, je suis en mesure de simplement utiliser un gestionnaire de paquets pour installer la dernière version de clang, qui fonctionne, tout simplement.
Je suis maintenant essayer de mettre en place clang/compilateur gnu sous windows et il semble être beaucoup plus difficile, Si seulement parce qu'il existe peu ou pas de la simple documentation 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é en mesure de l'utiliser pour obtenir clang de construire et de lien (à l'aide de gcc 4.8.2), mais les binaires 32 bits.
J'ai essayé d'installer la dernière prêts à l'emploi binaires de clang (3.6.2) et la version 64 bits de mingw-w64 (4.9.3 pour la version 64 bits avec la norme posix et sjlj pour les exceptions), et j'obtiens:
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
Ce qui semble indiquer que clang est de ne pas voir de gcc fichiers. Il semble que certaines versions de LLVM/clang sont à la recherche de certaines versions de gcc, mais qui ne semble pas être documenté nulle part?
De même quelqu'un m'a indiqué sur la LLVM IRC que vous avez besoin de modifier clang du pilote de regarder pour gcc dans certains chemins d'accès?
Ce que je suis à la recherche de
Je suis très bien avec la construction de LLVM/Clang partir de la source si nécessaire, mais je suis vraiment juste à la recherche de claire, étape par étape les instructions qui me permettent d'utiliser clang++
aussi facilement que je suis capable de faire avec mac/linux
Quelque chose comme:
- Construire
this version
de LLVM/Clang et le placer dansthat directory
- Télécharger et installer
this version
de cygwin (ou mingw32 ou mingw-w64) et installerthese packages
. - etc..
Vous devez vous connecter pour publier un commentaire.
si vous utilisez le prochain clang 3.7.0, il suffit de définir le CHEMIN d'accès à inclure mingw-w64 bin, clang fonctionnera comme vous vous attendez à
Essayez d'installer MSYS2 et ensuite installer le mingw-w64-x86_64-clang (binaire) paquet:
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 Win64 shell fourni par MSYS2,
clang
seront sur votre chemin.Si elle n'est pas assez bon, j'ai été récemment à la construction d'une version 64 bits de clang avec MSYS2 et de l'utiliser pour la compilation native 64 bits de Windows les fichiers exécutables. Mon processus a été quelque chose comme:
export MINGW_INSTALLS=mingw64
(de sorte que vous êtes seulement de compiler la version 64 bits), puis exécutezmakepkg-mingw
.Il est peu probable que vous obtiendrez tout droit sur le premier essai, et certains fichiers peuvent être adaptés. Clang peuvent avoir changé depuis la dernière fois que je l'ai fait et quelques correctifs pourraient ne pas s'appliquer proprement.
pacman -S mingw-w64-x86_64-clang
et a été en mesure de construire le fichier exe que je voulais. Il fonctionne très bien à partir de l'intérieur de la mingw64 shell, mais quand je tente d'ouvrir le fichier exe à partir de l'explorateur windows je reçois plusieurs manquant dll. Je me souviens de quand j'ai créé mingw32 sur mon serveur linux pour compiler exe est qu'un moyen de résoudre ce problème est de lier statiquement les bibliothèques pour la dll correspondante du. Est-il un moyen d'automatiser cela sans ajout de-static-libstdc++
, etc? Encore une fois, opter pour la simplicité ici. Je me rends compte que dans les grands projets, vous pouvez simplement l'inclure dans les fichiers.-static
drapeau et le compilateur va essayer de comprendre les libs lorsque cela est possible. Je comprends que cela arrive à un coût de l'augmentation de la taille de l'exécutable et la possible utilisation de la mémoire, mais c'est acceptable.pacman -S mingw-w64-x86_64-clang
etpacman -S clang
? Je vois deux noms différents et des versions, mais je ne suis pas entièrement sûr de savoir où il obtient clang de/mingw64
. Le dernier bruit qui serait probablement une msys2 programme (à l'aide de la MSYS2 émulation POSIX trucs et selon msys-2.0.dll) et dans /usr/bin. Chaque version de clang est probablement configuré pour produire des exécutables pour la même exécution que clang utilise elle-même, mais je ne suis pas trop sûr, et je sais qu'un build de clang est en mesure de cibler de multiples plates-formes. Tous les officiels MSYS2 paquet de recettes sont dans ces deux repos: github.com/AlexPux/MINGW-packages github.com/AlexPux/MSYS2-packagesVous pouvez installer la version pré-version binaire pour Windows ici. MinGW-w64 peut être téléchargé ici. Bien sûr, vous devriez assurez-vous que les chemins d'accès sont correctement mis en place.
Pour la dernière version de bruit, par exemple,
clang 6.0.0
. La solution ci-dessus par @user5271266 ne sera pas suffisant. Maintenant, la cible par défaut pour clang Windows estx86_64-pc-windows-msvc
(à Supposer que vous utilisez Windows 64 bits).Afin de compiler les fichiers source C++, selon ici, nous devrions changer de cible:
PATH
variable, quelque chose commed:\Program Files\LLVM\bin
.