天天看點

2Makefile



1關于makefile,在編寫makefile的時候,makefile這個名稱第一個字母要大寫。并且必須是makefile.一個makefile就相當于:

#目标:依賴(條件)

#      

指令    

à注意這裡前面是一個tab

2案例:

a:建立一個項目calc,案例項目結構如下:

2Makefile

b編寫mul.c

2Makefile

c編寫sub.c

2Makefile

d編寫add.c

2Makefile

e編寫dive.c

2Makefile

f編寫main.c

2Makefile

g編寫common.h

2Makefile

3.編寫makefile

階段1

2Makefile

階段2

2Makefile
2Makefile
2Makefile

階段3:

2Makefile

運作結果:

2Makefile

#階段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

繼續閱讀