Makefile 教程學習手册

Published on 2023-04-20 00:10:05 · 中文 · English · بالعربية · Español · हिंदीName · 日本語 · Русский язык

Makefile 是一種程式構建工具,可在 Unix、Linux 及其風格上運行。 它有助於簡化可能需要各種模組的程式可執行檔的構建。 為了確定模組需要如何編譯或重新編譯,make需要用戶定義的makefile的説明。 本教程將增強您對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
以下是 fnctions.h 的代碼-
void print_hello();
int factorial(int n);
編譯檔並獲得可執行檔的簡單方法是運行命令-
gcc  main.cpp hello.cpp factorial.cpp-o hello
此命令生成 hello 二進位檔。 在這個例子中,我們只有四個檔,而且我們知道函數調用的順序。 因此,鍵入上述命令並準備最終二進位檔是可行的。
但是,對於擁有數千個原始程式碼檔的大型項目,維護二進位構建變得困難。
make 命令允許您管理大型程式或程式組。 當您開始編寫大型程式時,您會注意到重新編譯大型程式比重新編譯短程式需要更長的時間。 此外,您會注意到您通常只處理程式的一小部分(例如單個函數),而其餘程式的大部分都沒有改變。
在接下來的部分中,我們將看到如何為我們的項目準備 makefile。