makefile通用版本(一)

2022-03-19 11:07:48 字數 1443 閱讀 2210

實際當中程式檔案比較大,這時候對檔案進行分類,分為標頭檔案、原始檔、目標檔案、可執行檔案。也就是說通常將檔案按照檔案型別放在不同的目錄當中,這個時候的makefile需要統一管理這些檔案,將生產的目標檔案放在目標目錄下,可執行檔案放到可執行目錄下。

dir_inc = ./include

dir_src = ./src

dir_obj = ./obj

dir_bin = ./bin

src = $(wildcard $/*

.c)obj = $(patsubst %.c,$/%.o,$(notdir $))

target = main

bin_target = $/$

cc = gcc

cflags = -g -wall -i$

$:$ $(cc) $(obj) -o $@

$/%.o:$/%.c

$(cc) $(cflags) -c $< -o $@

.phony:clean

clean:

find $ -name *.o -exec rm -rf{}

解釋如下:

(1)makefile中的 符號 $@, $^, $< 的意思:

$@  表示目標檔案

$^  表示所有的依賴檔案

$<  表示第乙個依賴檔案

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

(2)wildcard、notdir、patsubst的意思:

wildcard : 擴充套件萬用字元

notdir : 去除路徑

patsubst :替換萬用字元

src = $(wildcard *.c)

等於指定編譯當前目錄下所有.c檔案,如果還有子目錄,比如子目錄為inc,則再增加乙個wildcard函式,象這樣:

src = $(wildcard *.c) $(wildcard inc/*.c)

(3)gcc -i -l

-l的區別:

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靜態庫檔案)

通用版的測試流程

前提 針對乙個從零開始的全新的專案 一 目標 結合公司現有的專案情況制定合理規範的測試流程,提高測試效率和產品質量,盡可能減少客戶對產品的問題反饋,核心還是要加強專案組成員之間的工作交流和溝通,保證整個專案的高效率的按質按量的交付。二 測試流程說明圖 三 測試流程 1.需求分析 參與人員 客戶 專案...

無亂碼filter完全通用版

dofilter req,resp,chain 1 轉換型別 2 if method.equalsignorecase get enumeration names req.getparameternames while names.hasmoreelements string name string...

通用Makefile詳解

我們在linux環境下開發程式,少不了要自己編寫makefile,乙個稍微大一些的工程下面都會包含很多。c的源文 件。如果我們用gcc去乙個乙個編譯每乙個原始檔的話,效率會低很多,但是如果我們可以寫乙個makefile,那麼只需要執行乙個make就ok了,這 樣大大提高了開發效率。但是makefil...