makefile簡單入門(三)

2022-08-01 13:06:13 字數 1668 閱讀 1575

makefile有三個非常有用的自動變數,分別是$@,$^,$<

$@--目標檔案,$^--所有的依賴檔案,$<--第乙個依賴檔案。

還是原來的

objects =main.o add.o sub.o

test:$(objects)

gcc -o test $(objects)

main.o:main.c

gcc -c main.c

add.o:add.c add.h

gcc -c add.c

sub.o:sub.c sub.h

gcc -c sub.c

.phony:clean

clean:

rm test $(objects)

第一步使用$@,代表了目標檔案test,第一步這樣替換。

objects =main.o add.o sub.o

test:$(objects)

gcc -o $@ $(objects)

main.o:main.c

gcc -c main.c

add.o:add.c add.h

gcc -c add.c

sub.o:sub.h sub.c

gcc -c sub.c

.phony:clean

clean:

rm test $(objects)

第二步,我們開始學著使用@^,$^--所有的依賴檔案

objects =main.o add.o sub.o

test:$(objects)

gcc -o $@ $^

main.o:main.c

gcc -c main.c

add.o:add.c add.h

gcc -c add.c

sub.o:sub.h sub.c

gcc -c sub.c

.phony:clean

clean:

rm test $(objects)

第三步,繼續學會使用$<

objects =main.o add.o sub.o

test:$(objects)

gcc -o $@ $^main.o:main.c

gcc -c $<

add.o:add.c add.h

gcc -c $<

sub.o:sub.c sub.h

gcc -c $<

.phony:clean

clean:

rm test $(objects)

如果把 add.c 和add.h的先後順序替換,就會報錯,因為$《代表的是第乙個依賴檔案,也就是比如add.o:add.c add.h這裡的第乙個依賴檔案是add.c

你可以試著把clean中的test替換成@$,吧$(objects)替換成@^試試,會發生什麼?

還沒完,還有模式匹配

objects =main.o add.o sub.o

test:$(objects)

gcc -o $@ $^main.o: %o:%c

gcc -c $< -o $@

.phony:clean

clean:

rm test $(objects)

參考:

Makefile簡單入門

作為linux或unix下的程式開發人員,大家一定都遇到過makefile,用make命令來編譯自己寫的程式確實是很方便。一般開發情況下,大家都是手工寫乙個簡單makefile。下面先給乙個最簡單的示例 makefile示例 object main.o function.o change objec...

makefile入門舉例(簡單寫)

1.首先準備所需的target和files 按照makefile的基本格式,如下圖所示.makefiles in linux an overview target為calculate。files為main.c,add.c divide.c minus,multiply.c math.c 分別如下 m...

Makefile 入門知識

這篇文章介紹在linux下進行c語言程式設計所需要的基礎知識。在這篇文章當中,我們將會學到以下內容 源程式編譯 makefile的編寫 程式庫的鏈結 程式的除錯 標頭檔案和系統求助 1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器。下面我們以乙個例項來說...