为什么使用 Makefile?



编译源代码文件可能很费力,尤其当您必须包含多个源文件并且每次需要编译时都必须键入编译命令时。Makefile 是简化此任务的解决方案。

Makefile 是特殊格式的文件,可帮助自动构建和管理项目。

例如,我们假设有以下源文件。

  • main.cpp
  • hello.cpp
  • factorial.cpp
  • functions.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

以下是 functions.h 代码 -

void print_hello();
int factorial(int n);

编译文件并获取可执行文件的简单方法是运行命令 -

gcc  main.cpp hello.cpp factorial.cpp -o hello

此命令生成 hello 二进制文件。在此示例中,我们只有四个文件,并且我们知道函数调用的顺序。因此,键入以上命令并准备最终二进制文件是可行的。

然而,对于我们拥有数千个源代码文件的大型项目,维护二进制构建变得困难。

make 命令允许您管理大型程序或程序组。当您开始编写大型程序时,您会注意到重新编译大型程序所花费的时间比重新编译小型程序所花费的时间更长。此外,您会注意到您通常仅处理程序的一小部分(例如单一函数),而剩下的程序大部分保持不变。

在后续部分中,我们将了解如何为我们的项目准备 Makefile。

广告
© . All rights reserved.