2009-11-18 11 views
5

Comment compiler mes programmes C++ dans Cygwin. J'ai gcc installé. Quelle commande devrais-je utiliser? En outre, comment puis-je exécuter mon application de console lorsqu'il est dans une extension .cpp. J'essaie d'apprendre C++ avec quelques petits programmes, mais en Visual C++, je ne veux pas avoir à créer un projet séparé pour chaque petit fichier .cpp.Compilez C++ avec Cygwin

Répondre

12

Vous devez utiliser une commande comme:

g++ -o prog prog.cpp 

C'est une forme simple qui transformera un projet C++ un fichier dans un fichier exécutable. Si vous avez plusieurs fichiers C++, vous pouvez faire:

g++ -o prog prog.cpp part2.cpp part3.cpp 

mais finalement, vous aurez envie de présenter makefile pour plus de commodité pour que vous suffit de compiler les bits qui ont changé. Ensuite, vous vous retrouverez avec un Makefile comme:

prog: prog.o part2.o part3.o 
    g++ -o prog prog.o part2.o part3.o 

prog.o: prog.cpp 
    g++ -c -o prog.o prog.cpp 

part2.o: part2.cpp 
    g++ -c -o part2.o part2.cpp 

part3.o: part3.cpp 
    g++ -c -o part3.o part3.cpp 

Et puis , vous allez commencer à comprendre comment écrire vos makefiles pour les rendre plus souples (par exemple ne pas avoir besoin d'une règle distincte pour chaque fichier C++), mais cela peut être laissé pour une autre question. En ce qui concerne la création d'un projet distinct pour chaque fichier C++, ce n'est pas du tout nécessaire. Si vous les avez tous dans un répertoire et il y a un mappage simple des fichiers C++ pour les fichiers exécutables, vous pouvez utiliser le makefile suivant:

SRCS=$(wildcard *.cpp) 
EXES=$(SRCS:.cpp=.exe) 

all: $(EXES) 

%.exe: %.cpp 
    g++ -o [email protected] $^ 

Lancez ensuite la commande make et il (intelligemment) créer tous vos exécutables. [email protected] est la cible et $^ est la liste des pré-requis. Et, si vous avez des règles plus compliquées, il vous suffit de les abattre en bas de la page. Des règles spécifiques seront choisis de préférence aux règles de motif:

SRCS=$(wildcard *.cpp) 
EXES=$(SRCS:.cpp=.exe) 

all: $(EXES) 

%.exe: %.cpp 
    g++ -o [email protected] $^ 

xx.exe: xx.cpp xx2.cpp xx3.cpp 
    g++ -o [email protected] $^ 
    echo Made with special rule. 
+0

Merci. Mais puis-je créer un seul makefile qui compile n'importe quel fichier C++ dans le même répertoire au lieu de créer un makefile pour chaque fichier .cpp spécifique? –

+0

Quelle est l'extension? .faire? Ou pas d'extension comme myMakefile –

+0

@Mohit, ces makefiles compilent n'importe quel fichier cpp à son exe équivalent (le joker et le motif '%' voient cela). Par convention, le fichier make est appelé Makefile ou makefile. Vous pouvez utiliser un nom différent comme bob.mk, mais vous devez faire 'make -f bob.mk all' au lieu de 'make all'. – paxdiablo

4

Vous aurez besoin de g ++. Ensuite, essayez g++ file.cpp -o file.exe comme un début. Plus tard, vous pouvez éviter de taper beaucoup en apprenant à propos de Makefiles.

0

si vous voulez utiliser Cygwin, vous devez utiliser la gcc normale syntaxe

g++ -o foobar foobar.cpp 

mais qui ne joue pas vraiment bien avec Visual C++ . Je vous conseille de jeter un oeil dans Eclipse CDT si vous préférez utiliser GCC sur le compilateur visuel C++.

0

Ce que je fais pour compiler un programme cpp:

g++ -Wall Test.cpp -o Test 
-Wall enables warning and error messages to be shown 
-o Test creates an Test.exe after compilation 

Si vous voulez compiler des fichiers séparément:

g++ -Wall -c File1.cpp 
g++ -Wall -c File2.cpp 

Créez maintenant un fichier exécutable avec les fichiers objets combinés comme:

g++ -Wall File1.o File2.o -o File.exe 

De cette façon, vous pouvez compiler vos fichiers d'en-tête et vous pouvez les inclure dans vos programmes d'application.