Makefile的簡介
Makefile 是和 make 命令一起配合使用的.
很多大型項目的編譯都是通過 Makefile 來組織的, 如果沒有 Makefile, 那很多項目中各種庫和代碼之間的依賴關係不知會多複雜.
Makefile的組織流程的能力如此之強, 不僅可以用來編譯項目, 還可以用來組織我們平時的一些日常操作. 這個需要大家發揮自己的想象力.
Makefile的通用結構
# 以‘#’開頭的行表示註釋
#定義變量VAR,強制賦值爲test
VAR=test
#在VAR之前定義的值後面再追加app這個值,這時該變量值擴展爲testapp
VAR+=app
#如果之前VAR沒有被定義,則定義並使用testapp;否則使用之前的值。
VAR?=testapp
#第一條目標爲總的目標
#依賴可以是文件(目錄)或爲其他目標
#動作可以是Linux命令,動作的那一行必須以TAB鍵開頭
target: depend1 depend2 depend3 …
【TAB】 action1
【TAB】action2
target1;
【TAB】action1
【TAB】action2
Mkfile的簡單示例
首先我們需要在linux下創建一個文件夾,裏面需要寫兩個.c文件和一個頭文件
hello.c文件代碼
#include <stdio.h>
#include "heard.h"
int main (int argc, char **argv)
{
int a=5;
int b=6;
int c;
c=add(&a,&b);
printf("%d\n",c);
printf("hello world\n");
return 0;
}
add.c的文件代碼
#include <stdio.h>
int add(int *a, int *b);
int add(int *a, int *b)
{
int c;
c=(( *a)+( *b));
return c;
}
heard.h的頭文件
int add(int *a, int *b);
在沒有學習makefile之前我們編譯的時候需要編譯運行的時候需要輸入
gcc hello.c gcc add.c -o test
如果我們每次運行都要輸入這一行,顯得很麻煩,如果我們使用makefile的使用會使這個變得更加簡單起來,
vim makefile
#定義變量
APP_NAME= test
cc=gcc
#這裏的all是整個makefile文件的第一個目標,也就是總的目標,當我們輸入make的命令時就是完成這個目標
all:
${cc} add.c hello.c -o ${APP_NAME}
#clean是一個單獨的目標,該目標沒有被總的目標all依賴或執行,所以默認該目標不會被執行,如果想執行該目標,則可以在Linux命令行下輸入make clean來執行
clean:
rm -f ${APP_NAME}
當我們敲make的時候,就完成沒有學makefile的操作。
當我們敲make clean的時候,test就會被刪除
上面所講到的東西都是關於makefile的簡單使用,如果想要了解更多知識點,可以推薦大家一篇博客,供大家學習
Makefile的詳細介紹