2009-11-18 39 views
5

¿Cómo compilo mis programas en C++ en Cygwin. Tengo gcc instalado. ¿Qué comando debería usar? Además, ¿cómo puedo ejecutar mi aplicación de consola cuando está en una extensión .cpp? Estoy tratando de aprender C++ con algunos pequeños programas, pero en Visual C++, no quiero tener que crear un proyecto separado para cada pequeño archivo .cpp.Compilar C++ con Cygwin

Respuesta

12

Es necesario utilizar un comando como:

g++ -o prog prog.cpp 

Esa es una forma sencilla que dará vuelta a un proyecto de un archivo C++ en un archivo ejecutable. Si tiene varios archivos de C++, puede hacerlo:

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

pero con el tiempo, usted querrá introducir archivos make para mayor comodidad para que usted sólo tiene que compilar los bits que han cambiado. Entonces usted va a terminar con un Makefile como:

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 

Y continuación, comenzará a averiguar cómo escribir sus archivos make para hacerlos más flexibles (como no tener una regla independiente para cada archivo C++), pero eso puede dejarse para otra pregunta.

En cuanto a tener un proyecto separado para cada archivo C++, eso no es necesario en absoluto. Si todos ellos tiene en un directorio y no hay una correspondencia sencilla de C++ a archivos ejecutables, puede utilizar el siguiente archivo MAKE:

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

all: $(EXES) 

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

A continuación, ejecute el comando make y va (inteligente) crear todos sus ejecutables. [email protected] es el objetivo y $^ es la lista de requisitos previos.

Y, si tiene reglas más complicadas, simplemente vuélvalas hacia abajo en la parte inferior. Normas específicas serán elegidos con preferencia a las reglas de patrón:

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

Gracias. Pero, ¿puedo crear un único archivo MAKE que compile cualquier archivo C++ en el mismo directorio en lugar de crear un MAKE para cada archivo .cpp específico? –

+0

¿Cuál es la extensión? .¿hacer? O sin extensión como myMakefile –

+0

@Mohit, esos archivos make compilan cualquier archivo cpp en su equivalente equivalente (el comodín y el patrón '%' se encargan de eso). Por convención, el archivo make se llama Makefile o makefile. Puedes usar un nombre diferente como bob.mk pero luego tienes que hacer 'make -f bob.mk all' en lugar de solo 'make all'. – paxdiablo

4

Necesitarás g ++. Luego pruebe g++ file.cpp -o file.exe como un comienzo. Más tarde puede evitar escribir mucho aprendiendo sobre Makefiles.

0

Si desea utilizar Cygwin se debe utilizar el gcc sintaxis normal de

g++ -o foobar foobar.cpp 

pero que en realidad no juegan bien con Visual C++ . Le aconsejo que eche un vistazo a Eclipse CDT si prefiere usar GCC sobre el compilador visual de C++.

0

Lo que hago para compilar un programa de 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 desea compilar archivos por separado:

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

A continuación, cree un ejecutable con los archivos de objetos combinados como:

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

De esta forma puede compilar sus archivos de encabezado y puede incluirlos en sus programas de aplicación.

Cuestiones relacionadas