1關于makefile,在編寫makefile的時候,makefile這個名稱第一個字母要大寫。并且必須是makefile.一個makefile就相當于:
#目标:依賴(條件)
#
指令
à注意這裡前面是一個tab
2案例:
a:建立一個項目calc,案例項目結構如下:
b編寫mul.c
c編寫sub.c
d編寫add.c
e編寫dive.c
f編寫main.c
g編寫common.h
3.編寫makefile
階段1
階段2
階段3:
運作結果:
#階段4
#定義變量,下面一句表示指定頭檔案所在的位置加載頭檔案,-l頭檔案包名
cppflags = -iinclude
#加上-g表示調試模式,通過它可以看到源代碼,在項目釋出的時候去掉-g,-wall嚴格編譯
cflags = -g -wall
ldflags=
#表示使用
cc=gcc
#表示如果是arm下,gcc可能是下面這個編譯器
#cc=arm-linux-gcc
#$(wildcard *.c)表示目前目錄下的所有.c檔案
src = $(wildcard *.c)
#下面的意思是将所有的.c檔案替換成為.o檔案
obj = $(patsubst %.c,%.o,$(src))
target = app
#程式最終編譯成app,依賴$(obj),而需要執行的指令是緊接着的下面一句,$^表示所有的依賴,$@表示要生成的目标,這句的目标是$(target),也就是app檔案
$(target):$(obj)
$(cc)s^ $(ldflags) -o $@
#$<表示一個的編譯成目标檔案$@
%.o:%.c
$(cc)-c $< $(cflags) $(cppflags) -o $@
#通過這種方式避免和目前已存在的clean檔案沖突,下面聲明的是一個僞目标
.phony:clean
#徹底清除生成過程檔案
clean:
-rm-f *.o
-rm-f app
#徹底清除過程檔案和生成配置檔案
distclean:
rm/usr/bin/app
install:
cpapp /usr/bin