📜  C++中的MakeFile及其应用

📅  最后修改于: 2021-05-30 08:26:43             🧑  作者: Mango

给定一个C++程序,任务是以Makefile的形式破坏整个程序。
它基本上用于为每个类/功能及其功能创建.cpp文件和.h文件,然后通过C++中可用的Makefile命令将它们链接在一起。

好处:

  • 它使代码更简洁明了,易于阅读和调试。
  • 更改功能或类时,无需每次都编译整个程序。 Makefile将仅自动编译发生更改的那些文件。
  • 通常,在长代码或项目中,Makefile被广泛使用,以便以更系统和有效的方式呈现项目。

示例:创建一个程序以查找数字的阶乘和乘法并打印。

传统方式

// Program to calculate factorial and
// multiplication of two numbers.
#include
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;
}

输出:

2
120
makefile

使用Makefile运行以上程序:

  • 档案名称:main.cpp
    #include 
      
    // 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();
    }
    
  • 档案名称:print.cpp
    #include 
      
    // Definition of print function is
    // present in function.h file
    #include "function.h"
    using namespace std;
      
    void print()
    {
        cout < "makefile" << endl;
    }
    
  • 文件名:factorial.cpp
    #include 
      
    // 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);
    }
    
  • 文件名:multiple.cpp
    #include 
      
    // 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;
    }
    
  • 文件名:functions.h
    #ifndef FUNCTIONS_H
    #define FUNCTIONS_H
      
    void print();
    int factorial(int);
    int multiply(int, int);
      
    #endif
    

上面程序的编译和运行命令:

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.

生成文件

想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”