爲什麼需要Makefile?
對於本次教程中的討論,假定有以下的源文件。
- main.cpp
- hello.cpp
- factorial.cpp
- functions.h
main.cpp 文件的內容
#include <iostream.h>
#include "functions.h"
int main(){
print_hello();
cout << endl;
cout << "The factorial of 5 is " << factorial(5) << endl;
return 0;
}
hello.cpp 文件的內容
#include <iostream.h>
#include "functions.h"
void print_hello(){
cout << "Hello World!";
}
factorial.cpp 文件的內容
#include "functions.h"
int factorial(int n){
if(n!=1){
return(n * factorial(n-1));
}
else return 1;
}
functions.h 內容
void print_hello();
int factorial(int n);
瑣碎的方法來編譯的文件,並獲得一個可執行文件,通過運行以下命令:
CC main.cpp hello.cpp factorial.cpp -o hello
這上面的命令將生成二進制的Hello。在我們的例子中,我們只有四個文件,我們知道的函數調用序列,因此它可能是可行的,上面寫的命令的手,準備最後的二進制。但對於大的項目,我們將有源代碼文件成千上萬的文件,就很難保持二進制版本。
make命令允許您管理大型程序或程序組。當開始編寫較大的程序,你會發現,重新編譯較大的程序,需要更長的時間比重新編譯的短節目。此外會發現通常只能在一小部分的程序(如單一功能正在調試),其餘的程序不變。
在隨後的章節中,我們將看到項目是如何準備一個makefile。