當一個項目比較大之后,我們希望分模塊管理,這個時候就需要把一部分方法放在獨立的文件中。
在main方法中如何引用這些文件呢?
一、gcc
比如我有一個function.c文件,里面包含了我的函數體
#include "function.h" int add(int a,int b){ return a+b; }
然后我把它抽象到一個function.h文件中
#include<stdio.h> int add(int a,int b);
在main.c中就可以這樣寫
#include "function.h" #include<stdio.h> int main(){ int a=1,b=2; int c=add(a,b); printf("c=%d\n",c); return 0; }
編譯main.c
gcc main.c function.c -o main
./main
二、make和makefile
如果我們項目中有很多文件需要編譯,用前面的方式可能會累死,linux提供了make命令幫我們編譯大型項目,不過需要我們提供一個配置文件makefile
比如上面的項目,makefile大概這么寫
1 all:main 2 main :main.c function.c 3 gcc -o main book1.c function.c 4 clean: 5 rm -f main
第一行:需要編譯的目標
第二行:目標依賴的源文件
第三行:編譯命令,必須以tab開頭
第四行:清理
第五行:清理命令
makefile有宏變量可以用,可以簡化Makefile的書寫,比如
$@ : 用在生成規則中,表示當前目標 $< : 用在生成規則中,表示當前目標的第一個依賴目標 $^ : 用在生成規則中,表示當前目標的所有依賴目標
那上面的Makefile可以簡化為
all:main main :main.c function.c gcc -o $@ $^ clean: rm -f main
