web-dev-qa-db-fra.com

Que devez-vous installer pour utiliser Clang Windows afin de construire c ++ 14 pour 64 bits?

METTRE À JOUR:

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/



TL; DR

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?


Le problème

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?


Ce que je cherche

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:

  1. Construisez this version de LLVM/Clang et placez-le dans that directory
  2. Téléchargez et installez this version de cygwin (ou mingw32 ou mingw-w64) et installez these packages.
  3. etc..
43
Johannes

si vous utilisez la prochaine version 3.7.0 de clang, configurez simplement PATH pour inclure le fichier bin de mingw-w64;

9
user5271266

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:

  1. Utilisez pacman pour installer base-devel, mingw-w64-x86_64-ninja, mingw-x86_64-cmake et peut-être quelques autres paquets nécessaires au processus de construction.
  2. Saisissez mon script PKGBUILD pour clang et les fichiers du même répertoire . Ceci est basé sur le paquet mingw-w64-clang-svn de MSYS2, qui est en grande partie l'œuvre de Martell Malone. Vous pouvez le trouver sur le canal MSYS2 IRC et lui en demander davantage.
  3. Dans un environnement Win64, Shell, accédez au répertoire contenant mon fichier PKGDUILD, exécutez 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.

12
David Grayson

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
1
jdhao