Dado un programa C++ y la tarea es romper todo el programa en forma de Makefile.
Básicamente se utiliza para crear un archivo .cpp y un archivo .h para cada clase/función y sus funcionalidades y luego vincularlos a través de un comando Makefile disponible en C++.
ventajas:
- Hace que los códigos sean más concisos y claros para leer y depurar.
- No es necesario compilar el programa completo cada vez que realiza un cambio en una funcionalidad o una clase. Makefile compilará automáticamente solo aquellos archivos en los que se hayan producido cambios.
- Generalmente, en códigos o proyectos largos, Makefile se usa ampliamente para presentar el proyecto de manera más sistemática y eficiente.
Ejemplo: Cree un programa para encontrar el factorial y la multiplicación de números e imprímalo.
Camino Tradicional
// Program to calculate factorial and // multiplication of two numbers. #include<bits/stdc++.h> using namespace std; // Function to find factorial int factorial(int n) { if (n == 1) return 1; // Recursive Function to find // factorial return n * factorial(n - 1); } // Function to multiply two numbers int multiply(int a, int b) { return a * b; } // Function to print void print() { cout << "makefile" << endl; } // Driver code int main() { int a = 1; int b = 2; cout << multiply(a, b) << endl; int fact = 5; cout << factorial(5) << endl; print(); return 0; }
Producción:
2 120 makefile
Use Makefile para ejecutar el programa anterior:
- Nombre del archivo: principal.cpp
#include <bits/stdc++.h>
// Note function.h which has all functions
// definations has been included
#include "function.h"
using
namespace
std;
// Main program
int
main()
{
int
num1 = 1;
int
num2 = 2;
cout << multiply(num1, num2) << endl;
int
num3 = 5;
cout << factorial(num3) << endl;
print();
}
- Nombre del archivo: imprimir.cpp
#include <bits/stdc++.h>
// Definition of print function is
// present in function.h file
#include "function.h"
using
namespace
std;
void
print()
{
cout <
"makefile"
<< endl;
}
- Nombre del archivo: factorial.cpp
#include <bits/stdc++.h>
// Definition of factorial function
// is present in function.h file
#include "function.h"
using
namespace
std;
// Recursive factorial program
int
factorial(
int
n)
{
if
(n == 1)
return
1;
return
n * factorial(n - 1);
}
- Nombre del archivo: multiplicar.cpp
#include <bits/stdc++.h>
// Definition of multiply function
// is present in function.h file
#include "function.h"
using
namespace
std;
int
multiply(
int
a,
int
b)
{
return
a * b;
}
- Nombre del archivo: funciones.h
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
void
print();
int
factorial(
int
);
int
multiply(
int
,
int
);
#endif
Comandos para compilar y ejecutar el programa anterior:
Open Terminal and type commands: g++ -c main.cpp g++ -c print.cpp g++ -c factorial.cpp g++ -c multiply.cpp g++ -o main main.o print.o factorial.o multiply.o ./main Note: g++ -c filename.cpp is used to create object file.