Makefile - 功能

  • 简述

    编译源代码文件可能很累人,尤其是当您必须包含多个源文件并在每次需要编译时键入编译命令时。Makefile 是简化此任务的解决方案。
    Makefile 是特殊格式的文件,可帮助自动构建和管理项目。
    例如,假设我们有以下源文件。
    • 主文件
    • 你好.cpp
    • 阶乘.cpp
    • 函数.h
    main.cpp
    以下是 main.cpp 源文件的代码 -
    
    #include <iostream>
    using namespace std;
    #include "functions.h"
    int main(){
       print_hello();
       cout << endl;
       cout << "The factorial of 5 is " << factorial(5) << endl;
       return 0;
    }
    
    hello.cpp
    下面给出的代码用于 hello.cpp 源文件 -
    
    #include <iostream>
    using namespace std;
    #include "functions.h"
    void print_hello(){
       cout << "Hello World!";
    }
    
    factorial.cpp
    factorial.cpp 的代码如下 -
    
    #include "functions.h"
    int factorial(int n){
       
       if(n!=1){
          return(n * factorial(n-1));
       } else return 1;
    }
    
    functions.h
    以下是 fnctions.h 的代码 -
    
    void print_hello();
    int factorial(int n);
    
    编译文件并获得可执行文件的简单方法是运行命令 -
    
    gcc  main.cpp hello.cpp factorial.cpp -o hello
    
    此命令生成hello二进制文件。在这个例子中,我们只有四个文件,并且我们知道函数调用的顺序。因此,输入上述命令并准备最终的二进制文件是可行的。
    但是,对于我们拥有数千个源代码文件的大型项目,维护二进制构建变得很困难。
    make命令允许您管理大型程序或程序组。当您开始编写大型程序时,您会注意到重新编译大型程序比重新编译短程序需要更长的时间。此外,您注意到您通常只处理程序的一小部分(例如单个函数),而其余程序的大部分都没有改变。
    在接下来的部分中,我们将看到如何为我们的项目准备一个 makefile。