linux程式設計工具makefile

2021-09-26 20:14:30 字數 1532 閱讀 2409

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...