Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Quel compilateur - ligne de commande - pour Windows adopter ?
    Salut,

    Je poste dans la section Débutant car je pense que mon sujet y trouvera sa meilleur place.

    Le titre parle donc de lui-même. Mais avant ça, voici ce qui m'a conduit à venir demander de l'aide :
    • Codant au début avec Code::blocks, je suis rapidement passé sur Linux, et donc invariablement sur gcc (g++).
      -
    • Retournant de temps en temps sur Windows, et ayant galéré un moment pour trouver un IDE qui me convienne, je suis passé à gcc sur Windows également (via minGW si je me souviens bien).
      -
    • En effet, je préfère de loin la compilation via ligne de commande qui permet, outre d'envoyer très facilement les options que l'on souhaite, de s'affranchir d'un interface graphique lourd et plein de fonctionnalités que l'on utilise que 1 fois tous les 200 ans.
      -
    • Bref, je n'ai eu aucun soucis jusqu'à avant-hier :
      • Essayant de compiler un programme un peu plus spécifique, j'ai rencontré des erreurs, qui, après recherches, m'ont laissé penser qu'il valait peut-être mieux passer sur un IDE optimisé pour Windows ; de plus les commentaires d'un habitué comme quoi utiliser un compilateur non prévu pour l'OS sur l'OS en question était une chose absurde m'ont conduit à tenter d'installer Visual Studio.
        -
      • (Puis c'est vrai aussi que les options du type -m32 de GCC sur Linux ne sont pas valables sur Windows, c'est logique mais bon .)
        -
      • Me voilà donc parti sur l'installation de Visual Studio qui est, à mon sens, une belle saleté (pour la petite histoire j'avais essayé de l'installer il y a quelques temps, mais l'installation étant forcée dans C:, ça m'a dégoûté).


    Mais, une fois installé :
    • Pour commencer, impossible de rediriger l'ensemble de l'installation dans une autre partition. J'ai désinstallé et réinstallé plusieurs fois, en passant notamment à travers la ligne de commande - "on" m'a dit qu'en ligne de commande, on avait un contrôle absolue sur l'installation, tu parles - mais rien à faire : toujours de 10 à 20 Go de bouffés dans C:\ ; et choisir uniquement les modules adaptés, je veux bien, mais c'est pas forcément très parlant pour un néophyte.
      -
    • Ensuite, impossible...de compiler du C. J'ai cherché sur Internet, cherché les paramètres, fenêtres ou options qui puissent me permettre de compiler du C, rien à faire, je n'ai rien trouvé dans Visual Studio. Je suis peut-être empoté, mais je vous assure avoir cherché partout.
      -
    • Pour finir, je souhaitais évidemment compiler en ligne de commande, ce qui semblait possible avec Visual Studio, malheureusement, la ' commande "cl" est introuvable '. J'ai donc cherché le binaire cl.exe, introuvable dans mes dossiers...Mais, comme "on" m'a dit que Visual Studio avait peut-être été mal installé, j'ai recommencé, en acceptant par défaut toutes les options, sans modifier les chemins d'installations, etc...rien à faire.


    J'ai donc lâché l'affaire...une deuxième fois.

    Mais, voilà : rencontrant maintenant des problème de compilation (avec g++ cette fois - précisons aussi que je n'avais jamais fait de C++), et perdant beaucoup trop de temps à essayer de corriger les erreurs en fonction des messages et autres (une erreur aboutie à chaque fois à autre chose, donc j'avance, mais c'est très chronophage), je viens solliciter votre aide. Dois-je :
    • Persévérer avec Visual Studio ? Si oui je veux bien de l'aide car j'y ai passé deux jours pleins et c'est franchement frustrant.
      -
    • Partir sur un autre compilateur ? Si oui, vous me conseillez lequel ? Sachant que je préfère de loin écrire mes codes dans le Notepad++ et compiler à la main via l'Invite.


    Merci d'avance pour à qui prendront le temps de me lire et de m'aider '

    PS : je suis sous Windows 10.
    PS bis : les - c'est pour aérer un peu le texte

  2. #2
    Responsable 2D/3D/Jeux

    Bonjour,

    Plusieurs éclaircissements :
    • MinGW, c'est le portage de GCC/G++ sur Windows ;
    • l'option -m32 est normalement présente sur MinGW, mais cela dépend de quelle MinGW vous avez installé ;
    • VS ne peut pas être installé sur une autre partition (ou que partiellement, mais il va aussi installer le SDK Windows et d'autres trucs). C'est un problème que j'ai rencontré déjà avec VS C# 2008. Et il arrive même, que des fois, il ne retrouve pas ses petits.


    De mon point de vue :
    • si vous avez la possibilité, faites vos développements sous Linux ;
    • la ligne de commande offre plus de possibilités pour les programmes sous Linux. Microsoft n'aime pas vraiment laisser des possibilités ;


    Techniquement :
    • cl.exe est disponible dans les répertoires de Visual Studio ;
    • pour pouvoir utiliser cl.exe (ainsi que nmake, le make de Microsoft), il faut d'abord exécuter un script qui, de mémoire, s'appelle vcvarsall.bat (toujours dans les répertoires de VS. D'ailleurs, ce script a bougé entre VS 2015 et VS 2017, ce qui est embêtant dans certains cas professionnels (et il y a d'autres trucs qui sont pénibles, mais je fais du bashing pour rien) ;
    • même si vous arrivez à lancer cl.exe et à passer des options plus ou moins farfelues, vous allez vite juste faire un nmake de votre projet Visual Studio et donc, retourner à la configuration dans options dans VS. Les options de VS ne sont pas aussi simples/limpides que celles de GCC.


    Solution :
    • Essayez les IDE suivants : Qt Creator, Visual Studio Code (même s'il porte un nom proche, il est bien mieux) ;
    • pour la compilation avec Visual Studio (en partant du principe que vous avez installé les bon modules ), vous devez faire un projet C/C++ desktop en ligne de commande ça devrait être bon.


    de plus les commentaires d'un habitué comme quoi utiliser un compilateur non prévu pour l'OS sur l'OS en question était une chose absurde m'ont conduit à tenter d'installer Visual Studio.
    Pourtant, l'utilisation de GCC (ou clang, un autre projet open source initié par ... Apple) marche très très bien sous Windows. D'ailleurs, je crois que Chrome (le navigateur Google) est compilé avec clang.
    Le seul avantage qu'à Visual Studio : il est développé par Microsoft et comme Windows est complètement fermé, il est possible qu'ils utilisent des techniques/fonctions que d'autres ne pourront pas, car non documentés. Mais bon, faut être bas niveau pour le sentir, je pense.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert éminent
    Citation Envoyé par .....1..... Voir le message
    Me voilà donc parti sur l'installation de Visual Studio qui est, à mon sens, une belle saleté (pour la petite histoire j'avais essayé de l'installer il y a quelques temps, mais l'installation étant forcée dans C:, ça m'a dégoûté).
    C'est, je pense, depuis Vista et la politique de Microsoft contre le problème de DLL hell : on garde plusieurs versions d'1 même bibliothèque/ service/ ... (celle s'appelle "assembly"), qu'on met à jour si nécessaire...
    De plus avec les dossiers virtuels, les nouveaux dossiers à but spécifique ("Program Data", "Roaming", ...) ... bien oui tout doit être dans le bon dossier

    Et en plus cela évite les recherches en profondeur comme c'était le cas lors d'1 mise à jour .Net avec Windows 7 pour chercher si tel ou tel composant est installé ou pas, et dans quel dossier


    Citation Envoyé par .....1..... Voir le message
    Ensuite, impossible...de compiler du C. J'ai cherché sur Internet, cherché les paramètres, fenêtres ou options qui puissent me permettre de compiler du C, rien à faire, je n'ai rien trouvé dans Visual Studio. Je suis peut-être empoté, mais je vous assure avoir cherché partout.
    Depuis longtemps, Visual compile en fonction de l'extension (peut être plus le cas, je ne suis plus à jour) : .cpp/ .hpp/ .tpp (?? ) -> C++, .c -> C.
    Mais si tu ne fais pas confiance à Visual, pour chaque fichier (clic droit -> propriétés -> "je-ne-sais-plus-où"), tu peux choisir le compilateur.


    Citation Envoyé par LittleWhite Voir le message
    si vous avez la possibilité, faites vos développements sous Linux ;
    mais faire des makefile, c'est une vraie tannée. peut être utiliser CMake ou autre logiciel multiplateforme pour la compilation/ éditions des liens


    Citation Envoyé par LittleWhite Voir le message
    cl.exe est disponible dans les répertoires de Visual Studio ;
    Effectivement, chaque version de Visual crée un dossier avec un numéro "interne" - Visual 2008 c'était 9 il me semble Comme cela tu peux avoir plusieurs versions de Visual qui cohabitent. Sauf les points solutions (.sln et autres fichiers/ extensions qui en dépendent) qui changent très souvent


    Citation Envoyé par LittleWhite Voir le message
    pour la compilation avec Visual Studio (en partant du principe que vous avez installé les bon modules ), vous devez faire un projet C/C++ desktop en ligne de commande ça devrait être bon.
    Voire un projet vide ... et ensuite sélectionner "'exécutable", si on veut telle ou telle bibliothèque, ...


    Citation Envoyé par LittleWhite Voir le message
    Pourtant, l'utilisation de GCC (ou clang, un autre projet open source initié par ... Apple) marche très très bien sous Windows. D'ailleurs, je crois que Chrome (le navigateur Google) est compilé avec clang.
    Le problème par exemple , c'est qu'avec Cygwin tous les exécutables dépendent de "cygwin1.dll" ... bibliothèque indispensable et que l'on ne peut pas changer ni modifier.

  4. #4
    Responsable 2D/3D/Jeux

    Citation Envoyé par foetus Voir le message
    mais faire des makefile, c'est une vraie tannée. peut être utiliser CMake ou autre logiciel multiplateforme pour la compilation/ éditions des liens
    Totalement, mais il reste que je trouve ça plus aisé à utiliser sous Linux que sous Windows (notamment, la recherche des bibliothèques, qui sous Linux est centralisée).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre à l'essai
    Salut,

    Merci à vous deux pour vos supères - super ? - réponses !!

    Concernant les éclaircissements :
    • Je suis d'accord, Windows aime bien mettre des bâtons dans les roues au niveau des possibilités de personnalisation.
    • Alors ma version de MinGW doit être ancienne - mais pas plus d'un an et demi - mais j'avoue ne plus vraiment me rappeler où je l'avais trouvée. Quoiqu'il en soit l'option -m32 ne passe pas. Il faudrait que je choppe à minima quelle version ?
    • Oui, personnellement je m'en suis débarrassé, je n'ai plus de mémoire disque et je n'ai pas la possibilité de changer mon disque de partition C:. Puis de toutes façons VS me parait trop "bric-à-brac". Puis j'ai eu beau me dépatouiller pour mettre le maximum de la suite dans D:, je n'aime pas avoir des programmes dispatchés sur plusieurs partitions.


    D'un point de vue technique :
    • Je préfère en effet passer par Linux, cependant quand je dois compiler des binaires pour Windows, c'est plus délicat...vous auriez une astuce ?
    • Alors je n'ai pas trouvé cl.exe, j'ai peut-être mal cherché mais même en passant par les options de recherche de Windows, je n'ai rien trouvé. Il faut lancer le script vcvarsall.bat pour créer cl.exe ou est-ce qu'il est déjà présent ? Car si c'est le cas, je ne l'ai vu nul part, mais je me répète


    Concernant les solutions :
    • Je vais laisser VS de côté. De toutes façons je n'ai pas besoin de faire du bas niveau, ou alors je débuggue
    • Toutes vos suggestions permettent de passer par la LdC en proposant des options simples et bien documentées ?


    foetus, merci pour tes indications. Mais malgré cela je persiste à dire que je n'ai pas réussi à compiler du C avec VS Après je dois bien avouer que je n'ai pas cherché très longtemps, le fait d'avoir 15 Go de bouffés sur ma partition système me trottant plus qu'autre chose dans la tête.

    Pour conclure, vous me conseillez plutôt :
    • MinGW ?
    • Visual Studio Code ?
    • Qt Creator ?
    • Sachant que je ne vois pas comment compiler pour Windows ailleurs que sur Windows...


    Merci par avance pour vos prochaines réponses'

  6. #6
    Responsable 2D/3D/Jeux

    Il faut lancer le script vcvarsall.bat pour créer cl.exe ou est-ce qu'il est déjà présent ? Car si c'est le cas, je ne l'ai vu nul part, mais je me répète
    Il est déjà présent. Le script permet juste de définir des chemins dans le PATH pour qu'il retrouve facilement ses outils.

    Toutes vos suggestions permettent de passer par la LdC en proposant des options simples et bien documentées ?
    Moi, je proposais des EDI. Si vous n'avez pas besoin d'EDI, alors une simple installation de MinGW permet d'avoir les outils, qui sont utilisables en ligne de commandes. Les EDI reposent sur un compilateur quelconque. Par exemple, si Qt Creatir détecte Visual Studio (enfin, le cl.exe et les autres potes) alors il l'utilisera pour la compilation. S'il détecte MinGW alors il utilisera MinGW. Les EDI sont indépendants du compilateur.

    Quoiqu'il en soit l'option -m32 ne passe pas. Il faudrait que je choppe à minima quelle version ?
    Elle a toujours exister pour moi. Peut être elle est absente dans une version 32 bits de MinGW. En réalité, je dirai même : pourquoi vouloir cette option. Il faut vraiment vouloir compiler en 32bits, ce qui sera obigatoirement le cas avec un MinGW 32 bits.

    MinGW est une suite de compilation (qui apporte les outils make, gcc, g++, ld et j'en passe). Ce n'est pas un EDI et donc, vous n'aurez pas accès à une jolie interface pour coder. C'est juste des outils en ligne de commande pour compiler un programme.
    Visual Studio Code et Qt Creator sont des EDI. Ils apportent donc un éditeur, un compilateur si besoin, un débogueur et empacte tout ça dans une jolie interface.

    Sachant que je ne vois pas comment compiler pour Windows ailleurs que sur Windows...
    Une machine virtuelle
    Plus sérieusement, il existe des solutions de cross compilation sous Linux pour compiler vers Windows. Suffit de chercher sur Google.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Rédacteur/Modérateur

    Je suppose que devoir installer sous C: peut être un problème, m'enfin est-ce grave..? je pense que c'est juste un prétexte de plus pour blâmer Windows.
    VS peut très bien compiler des fichiers C, c'est automatique via l'IDE selon l'extension du fichier et ça peut être forcé sur chaque fichier > Properties > All Options > Compile As. L'option command line pour ça est /TC.
    Parce que oui compiler en utilisant VS en ligne de commande c'est possible... Y'a d'ailleurs une doc sur le site de MSDN qui est le top résutlat Google.
    Tu peux utiliser CL directement (qu'un simple ctrl-f te permettra de trouver facilement , dans VC\bin et plein d'autres dossiers selon l'environnement/target je suppose), ou plus simplement devenv qui est l'exécutable de VS et peut bien sûr se lancer sans UI pour faire un build. Toutes les infos sur sur la doc montrées plus haut.
    En fait tu peux "compiler" ce que tu veux, ça supporte les personnalisations et tu peux exécuter des scripts Python sur un fichier par exemple au lieu de le compiler.
    Enfin VS reste selon moi le meilleur debugger que j'ai pu utiliser, et de loin. Ce n'est pas une question de faire du bas niveau ou non.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre à l'essai
    Salut, désolé pour le délai un peu longuet.

    En ce qui me concerne je ne l'ai pas trouvé =/ Je précise une nouvelle fois que j'ai bien cherché, alors peut-être avais-je installé les mauvais modules, ceci dit j'ai recommencé en installant TOUS les modules, rien à faire, même en laissant tout par défaut dans C:\.

    Machine virtuelle, c'est déjà le cas Par contre je ne connaissais pas la notion de cross compilation, je vais me renseigner à ce sujet.

    @Bousk, non, ce n'est pas un prétexte pour blâmer Windows : j'aime bien avoir un C:\ assez clean, de plus le mien est presque saturé et je n'ai pas la possibilité d'en changer maintenant. Puis me retrouver avec plusieurs Go de fichiers inutiles, ça m'agace un peu.

    Merci pour la doc, mais je connaissais déjà, cependant comme je ne trouvais pas cl.exe...