linux中對大量的工程檔案進行編譯,通常利用make工具來自動完成編譯,make工具通過乙個makefile(makefile)檔案來完成自動維護編譯工作。
makefile基本規則
分為三部分
target…:dependencies…
(tab鍵) command
目標(target)需要生成的目標檔案,目標也可以是要執行的動作,如「clean」。
依賴(dependencies)用來產生目標的輸入檔案,乙個目標通常依賴多個檔案。
命令(command)是make執行的動作,乙個可以有多個命令,每個佔一行。注意:每個命令列的起始字元必須為tab字元!
makefile自動化變數
選項名作用$@
規則的目標檔名
$<
規則的第乙個依賴檔名
$^規則的所有依賴檔案列表
makefile中常見函式
• wildcard函式
當前目錄下匹配模式的檔案 例如:src=(wi
ldca
rd∗.
c)•n
otdi
r函式去
除路徑例
如:
(wildcard *.c) • notdir函式 去除路徑 例如:
(wildc
ard∗
.c)•
notd
ir函式
去除路徑
例如:(notdir$src)
• patsubst函式
模式匹配替換 例如:
( pa
tsub
st
(patsubst%.c,%.o,
(patsu
bstsrc)
簡單的makefile檔案編寫
//最簡單的makefile例子
//改進版1
main:main.o add.o subtract.o
gcc main.o add.o subtract.o -o main
main.o:main.c list.h
gcc -c main.c -o main.o
list.o:list.c list.h
gcc -c list.c
.phony:clean
clean:
rm -f main main.o list.o
//改進版2
elf=main
cc=gcc
src=$(wildcard *.c)
objects=$(src:.c=.o)
$(elf):$(objects)
$(cc) $^ -o $@
$(objects):
clean:
rm -f $(objects) $(elf)
巧用qmake工具生成專業的makefile
問題描述 一般來說在linux下程式設計寫個測試程式,都需要製作乙個makefile檔案,但是如果自己手動編寫每個還是比較麻煩,而且看上去也不太專業。而如果用autoconf工具生成也還是需要加入一些手動操作,也不是很方便。解決方法 利用qt程式裡的qmake工具,qmake工具是qt 開發環境中的...
linux下C工程層級目錄的Makefile編寫
以前在ubuntu的gcc寫小型的測試程式,都是直接呼叫gcc命令及其選項,突然有想完成稍大的工程的衝動,於是用了下makefile,果然強大。目錄包含 bin src inc lib obj makefile檔案與它們同級,是事先設定好的,以下為原始碼檔案 exchange.h ifndef ex...
《Linux程式設計》 開發工具
一 多個原始檔帶來的問題 二 make命令和makefile 1 makefile的語法 1 makefile檔案由一組依賴關係和規則組成。2 make命令會會根據makefile檔案來確定目標檔案的建立順序以及正確的規則呼叫順序。2 make命令的選項和引數 1 make程式選項 i k 讓mak...