Acabo de heredar un código C ++ que se escribió mal con un archivo cpp que contenía las funciones principales y muchas otras. También hay .h
archivos que contienen clases y sus definiciones de funciones.
Hasta ahora, el programa se compilaba usando el comando g++ main.cpp
. Ahora que separé las clases .h
y los .cpp
archivos, ¿necesito usar un archivo MAKE o todavía puedo usar el g++ main.cpp
comando?
c++
compilation
header
makefile
Meir
fuente
fuente
g++ *.cpp -o output
Para compilar por separado sin vincular, debe agregar la
-c
opción:fuente
g++ -o my_executable myclass.o main.o
Compilar varios archivos a la vez es una mala elección si va a poner eso en el Makefile.
Normalmente en un Makefile (para GNU / Make ) debería ser suficiente escribir que:
De esa manera
make
, se recompilaría correctamente solo lo que se debe volver a compilar. También se pueden agregar algunos ajustes para generar las dependencias del archivo de encabezado, por lo que make también reconstruiría correctamente lo que debe reconstruirse debido a los cambios en el archivo de encabezado.fuente
Todavía puedes usar g ++ directamente si quieres:
donde f1.cpp y f2.cpp son los archivos con las funciones en ellos. Para obtener detalles sobre cómo usar make para hacer la compilación, consulte la excelente documentación de make de GNU .
fuente
Sé que esta pregunta se hizo hace años, pero todavía quería compartir cómo suelo compilar múltiples archivos de C ++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
¡¡eso es todo!!
La razón por la que estoy usando * es que, si tienes 30 archivos cpp, ¿los escribirías todos? o simplemente use el signo * y ahorre tiempo :)
ps Use este método solo si no le importa el archivo MAKE.
fuente
.h
los archivos no tendrán nada que ver con la compilación ... solo te interesan los archivos cpp ... así que escribeg++ filename1.cpp filename2.cpp main.cpp -o myprogram
significa que está compilando cada archivo cpp y luego los ha vinculado en
myprgram
.luego ejecuta tu programa
./myprogram
fuente
Como dijo rebenvp , usé:
Y luego haga esto para la salida:
Pero una mejor solución es usar el
make
archivo. Lea aquí para saber más sobremake
archivos.También asegúrese de haber agregado los
.h
archivos necesarios en los.cpp
archivos.fuente
Puede usar varios comandos de g ++ y luego vincular, pero lo más fácil es usar un Makefile tradicional o algún otro sistema de compilación: como Scons (que a menudo son más fáciles de configurar que los Makefiles).
fuente
Si desea usar
#include <myheader.hpp>
dentro de sus archivos cpp puede usar:fuente
Solía usar un Makefile personalizado que compilaba todos los archivos en el directorio actual, pero tenía que copiarlo en cada directorio que lo necesitaba, siempre.
Así que creé mi propia herramienta: Universal Compiler, que facilitó mucho el proceso al compilar muchos archivos.
fuente
~ / In_ProjectDirectory $ g ++ coordin_main.cpp coordin_func.cpp coordin.h
~ / In_ProjectDirectory $ ./a.out
... ¡¡Trabajó!!
Usando Linux Mint con Geany IDE
Cuando guardé cada archivo en el mismo directorio, un archivo no se guardó correctamente dentro del directorio; el archivo coordin.h. Entonces, volví a verificar y se guardó allí como coordin.h, y no incorrectamente como -> coordin.h.gch. Las pequeñas cosas Arg !!
fuente