2009-10-28 6 views
9

Fondamentalement, je veux compiler C/C++ en utilisant le GCC sur Windows. Les deux plates-formes concurrentes, comme je le vois, sont MinGW et Cygwin. Chacun a ses avantages et ses limites. MinGW se compile pour Windows, alors que Cygwin a besoin du fichier .dll cygwin. Cependant, l'installation de bibliothèques sur MinGW est difficile, alors que sur cgwin c'est plus facile, en utilisant setup.exe comme 'gestionnaire de paquets'.Meilleure façon de configurer un environnement de construction Windows pour C/C++

Ma question est quelle est la meilleure façon de compiler sur Windows. Serait-il préférable d'utiliser MinGW et de lutter avec les bibliothèques (dans ce cas, il existe un moyen facile d'installer des bibliothèques sur MinGW). Ou devrais-je utiliser Cygwin, si oui comment l'obtenir pour compiler sans avoir besoin du fichier .dll cygwin, compiler efficacement pour Windows normal.

+0

question Subjective. Je préfère Mingw, car vous ne codez pas sur une couche de compatibilité. En supposant que vous voulez un environnement libre (comme dans la bière), il y a encore quelques options qui vous manquent - les éditions Express de Visual Studio, ou la version en ligne de commande de VC++. – asveikau

Répondre

7

Le moyen le plus simple et le plus efficace de compiler sous Windows est d'utiliser visual studio expres s. Ce est gratuit. Une bonne raison d'utiliser cygwin est pour les versions multi-plateformes. Une bonne raison d'utiliser gcc est qu'il prend en charge un peu de compilateur que le compilateur Microsoft n'a pas. Mais dans l'ensemble, VC++ Express est la solution idéale pour le développement sous Windows uniquement.

+0

Si vous utilisez Visual Studio Express, vous ne pouvez pas légalement faire des applications commerciales sans enfreindre les conditions d'utilisation. – Andres

+10

@Andres: c'est simplement faux. Voir http://www.microsoft.com/express/support/faq/ –

+1

@Andres: # Puis-je utiliser Express Editions pour un usage commercial? Oui, il n'existe aucune restriction de licence pour les applications créées à l'aide de Visual Studio Express Editions. –

5

Il y a toujours la possibilité d'utiliser -mno-cygwin avec Cygwin pour compiler avec les bibliothèques Windows comme MinGW fait:

gcc -mno-cygwin file.c -o test 

Ce n'est pas un choix facile et dépend surtout de combien vous allez compter sur d'autres bibliothèques. Cygwin ajoute vraiment une couche supplémentaire, plus lourde mais qui "émule" mieux l'environnement Linux que MinGW.

Edit:

Qt Creator vous permet de compiler avec MinGW sous Windows (et gcc sous Linux, ...), a un IDE qui rend le débogage plus convivial que gdb. Si vous avez besoin de bibliothèques, vous avez toujours la possibilité d'utiliser les bibliothèques Qt. Ce serait une bonne alternative à Visual Studio si vous voulez vraiment vous en tenir à la future portabilité.

+0

L'indicateur -mno-cygwin ne crée pas de binaire statique, il en crée un qui n'est pas lié à cygwin.dll - en substance, un programme "bare" win32. En pratique (des choses modulo comme la génération de code différente à partir de différentes versions du compilateur) c'est exactement ce que vous obtenez du compilateur mingw. –

+0

Bon, merci de m'avoir fait remarquer Andy, je vais éditer la réponse. – RedGlyph

+0

@Andy: Je ne sais pas vraiment, mais Cygwin libc (et éventuellement d'autres librairies de stock) ne dépendrait-il pas de cygwin.dll? C'est à dire. Si vous faites -mno-cygwin, ne seriez-vous pas limité à l'API Win32 seulement? –

0

Il est facile d'installer GCC enveloppé MinGW au equation.com. Cliquez sur "Outils de programmation" puis sur "Fortran, C, C++", téléchargez la version que vous préférez, installez et utilisez.

3

Vous voudrez peut-être regarder CodeBlocks. Il est généralement utilisé pour construire des applications WxWidgets, mais il enveloppe bien MinGW.

+0

Je l'utilise pour jouer avec le support C++ 0x de gcc 4.4. Crashes parfois mais fonctionnels dans le cas normal. – jmucchiello

1

Qt Creator est livré avec MinGW en standard et peut être utilisé pour créer des projets qui n'utilisent pas réellement le framework Qt.

+0

Je dirais aller avec Mingw, si seulement à cause de Qt Creator. C'est vraiment bien. –

+0

Je l'avais déjà mentionné dans mon post (sauf le lien) ;-) Mais oui, ce serait mon premier choix à développer avec gcc. J'espère avec une mise à jour à 4.6 bientôt. – RedGlyph

0

Une méthode possible consiste à utiliser CMake qui peut générer le projet Visual Studio à partir de vos sources, puis compiler à partir de Visual Studio. Il peut également créer un projet pour d'autres IDE, ce qui vous permet d'aller sur plusieurs plateformes.

1

En fait, il y a l'option # 3: si votre édition de Windows le permet, vous pouvez installer Microsoft Services For Unix/Subsystem for Unix Applications, puis obtenir gcc de SUACommunity. Il a aussi un gestionnaire de paquets. De ces 3 options, cela vous donnera le comportement le plus proche d'un vrai système Unix. Toutefois, les applications résultantes ne sont pas des applications Win32; ils sont des applications SUA, et nécessitera SUA pour fonctionner. Si vous écrivez du code pour vous, ce n'est généralement pas un problème si vous écrivez du code pour vous-même, mais si vous voulez écrire et distribuer une application Windows appropriée, je vous conseille de ne pas utiliser Unix, donc MinGW.

0

Je pense que la réponse dépend si vous avez l'intention d'utiliser des bibliothèques ou de compiler des programmes qui sont destinés à POSIX ou à une cible POSIX. C'est ce à quoi Cygwin est destiné, tandis que MinGW est plus destiné à la compilation de programmes ciblés sur Windows utilisant GCC.

Questions connexes