makefile檔案的筆記

2021-07-07 03:05:34 字數 1200 閱讀 9896

經常有人需要順序編譯乙個乙個的模組,最後才連線生成可執行程式,但是如果乙個模組乙個模組地執行make,比較馬法,下面是乙個經過驗證的makefile;

可以根據自己的需要修改subdirs巨集的值,設定自己需要編譯的目錄的順序.就可以了.

#編譯所有子目錄

#subdirs=`ls -d */ | grep -v 'bin' | grep -v 'lib' | grep -v 'include'`

#編譯指定子目錄

subdirs=dir1 dir2 dir3

define make_subdir

@for subdir in $(subdirs) ; do \

( cd $$subdir && make $1) \

done;

endef

all:

$(call make_subdir , all)

install :

$(call make_subdir , install)

debug:

$(call make_subdir , debug)

clean:

$(call make_subdir , clean)

gcc -o hello hello.c -i /home/hello/include -l /home/hello/lib -lworld

上面這句表示在編譯hello.c時-i /home/hello/include表示將/home/hello/include目錄作為第乙個尋找標頭檔案的目錄,

尋找的順序是:/home/hello/include-->/usr/include-->/usr/local/include

-l /home/hello/lib表示將/home/hello/lib目錄作為第乙個尋找庫檔案的目錄,

尋找的順序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

-lworld表示在上面的lib的路徑中尋找libworld.so動態庫檔案(如果gcc編譯選項中加入了「-static」表示尋找libworld.a靜態庫檔案)

$@  表示目標檔案

$^  表示所有的依賴檔案

$<  表示第乙個依賴檔案

$?  表示比目標還要新的依賴檔案列表

wildcard : 擴充套件萬用字元

notdir : 去除路徑

patsubst :替換萬用字元

makefile學習筆記 makefile概述

20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...

MakeFile 檔案的作用

makefile檔案儲存了編譯器和聯結器的引數選項,還表述了所有原始檔之間的關係 源 檔案需要的特定的包含檔案,可執行檔案要求包含的目標檔案模組及庫等 建立程式 make程式 首先讀取makefile檔案,然後再啟用編譯器,彙編器,資源編譯器和聯結器以便產生最後的輸出,最後輸出並生成的通常是可執行檔...

makefile檔案的編寫

簡單的說,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至可以在makefile中執行shell指令碼。makefile帶來的好處就是 自動化編譯 一旦寫好,只需要乙個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。關於程式...