MakeFile in C++ and its applications

02 Nov, 2018
Given a C++ program and the task is to break the entire program in the form of Makefile.It is basically used to create .cpp file and .h file for each class/functions and its functionalities and later link them all through a Makefile command available in C++.
Advantages:
It makes codes more concise and clear to read and debug.
No need to compile entire program every time whenever you make a change to a functionality or a class. Makefile will automatically compile only those files where change has occurred.
Generally, in long codes or projects, Makefile is widely used in order to present project in more systematic and efficient way.
Example: Create a program to find the factorial and multiplication of numbers and print it.
Traditional Way
// Program to calculate factorial and// multiplication of two numbers.#include<bits/stdc++.h>using namespace std;  // Function to find factorialint factorial(int n){    if (n == 1)        return 1;    // Recursive Function to find     // factorial    return n * factorial(n - 1);}  // Function to multiply two numbersint multiply(int a, int b){    return a * b;}  // Function to printvoid print(){    cout << "makefile" << endl;}  // Driver codeint main(){    int a = 1;    int b = 2;    cout << multiply(a, b) << endl;    int fact = 5;    cout << factorial(5) << endl;    print();    return 0;}
Output:
2
120
makefile
Use Makefile to run the above program:
File Name: main.cpp#include <bits/stdc++.h>  // Note function.h which has all functions// definations has been included#include "function.h"  using namespace std;  // Main programint main(){    int num1 = 1;    int num2 = 2;    cout << multiply(num1, num2) << endl;    int num3 = 5;    cout << factorial(num3) << endl;    print();}
#include <bits/stdc++.h>  // Note function.h which has all functions// definations has been included#include "function.h"  using namespace std;  // Main programint main(){    int num1 = 1;    int num2 = 2;    cout << multiply(num1, num2) << endl;    int num3 = 5;    cout << factorial(num3) << endl;    print();}
File Name: print.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;}
#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;}
File Name: factorial.cpp#include <bits/stdc++.h>  // Definition of factorial function// is present in function.h file#include "function.h"using namespace std;  // Recursive factorial programint factorial(int n){    if (n == 1)        return 1;    return n * factorial(n - 1);}
#include <bits/stdc++.h>  // Definition of factorial function// is present in function.h file#include "function.h"using namespace std;  // Recursive factorial programint factorial(int n){    if (n == 1)        return 1;    return n * factorial(n - 1);}
File Name: multiply.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;}
#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;}
File Name: functions.h#ifndef FUNCTIONS_H#define FUNCTIONS_H  void print();int factorial(int);int multiply(int, int);  #endif
#ifndef FUNCTIONS_H#define FUNCTIONS_H  void print();int factorial(int);int multiply(int, int);  #endif
Commands to Compile and Run above program:
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.

CPP-Basics
C++
C++ Programs
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.