2009-11-18 21 views
5

Come faccio a compilare i miei programmi C++ in Cygwin. Ho installato gcc. Quale comando dovrei usare? Inoltre, come posso eseguire la mia applicazione console quando si trova in un'estensione .cpp. Sto cercando di imparare C++ con alcuni piccoli programmi, ma in Visual C++, non voglio creare un progetto separato per ogni piccolo file .cpp.Compile C++ con Cygwin

risposta

12

È necessario utilizzare un comando come:

g++ -o prog prog.cpp 

Questo è un semplice modulo che trasformerà un progetto unico file C++ in un file eseguibile. Se si dispone di più file C++, si può fare:

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

ma alla fine, ti consigliamo di introdurre makefiles per una maggiore comodità in modo da avere solo per compilare i bit che sono stati modificati. Poi ci si ritroverà con un Makefile come:

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 

E poi, potrai iniziare a capire come scrivere i makefile per renderli più flessibili (come ad esempio, non necessitano di una regola separata per ogni file C++), ma può essere lasciato per un'altra domanda.

Per quanto riguarda l'esistenza di un progetto separato per ogni file C++, non è affatto necessario. Se li hai in una directory e c'è una semplice mappatura dei C++ file per file eseguibili, è possibile utilizzare il seguente makefile:

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

all: $(EXES) 

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

quindi eseguire il comando make e sarà (intelligentemente) creare tutti i tuoi eseguibili. [email protected] è l'obiettivo e $^ è l'elenco di prerequisiti.

E, se si dispone di regole più complicate, basta attaccarle verso il basso nella parte inferiore. Norme specifiche saranno scelti di preferenza alle regole del modello:

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

Grazie. Ma posso creare un singolo makefile che compila qualsiasi file C++ nella stessa directory invece di creare un makefile per ogni specifico file .cpp? –

+0

Qual è l'estensione? .rendere? O nessuna estensione come myMakefile –

+0

@Mohit, quei makefile compilano qualsiasi file cpp nel suo exe equivalente (il jolly e il pattern '%' vedono quello). Per convenzione, il file make si chiama Makefile o makefile. Puoi usare un nome diverso come bob.mk, ma devi fare "make -f bob.mk all" invece di "make all". – paxdiablo

4

Avrete bisogno di g ++. Quindi prova g++ file.cpp -o file.exe come inizio. Più tardi puoi evitare di digitare molto imparando a conoscere i Makefile.

0

se si desidera usare Cygwin è necessario utilizzare il normale gcc sintassi

g++ -o foobar foobar.cpp 

ma che in realtà non giocano bene con Visual C++ . Ti consiglio di dare un'occhiata a Eclipse CDT se preferisci usare GCC sul compilatore Visual C++.

0

Quello che faccio a compilare un programma cpp:

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

Se vuoi compilare file separatamente:

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

Ora creare un file eseguibile con i file oggetto combinate come:

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

In questo modo è possibile compilare i file di intestazione ed è possibile includere nei programmi dell'applicazione.