zz makefile寫法簡單示例

2021-09-08 21:44:36 字數 1787 閱讀 3004

例項1:

obj = a.o b.o main.o

h = a.h b.h

dbg = -g

main : $(obj)

gcc $(obj) $(dbg) -o main

%.o : %.cpp $(h)

g++ -c $< -o $@

例項2:

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

#makefile示例

object= main.o function.o

change:$(object)

cc -o change $(object)

mv change $(home)/bin

main.o:

cc -c main.c -i$(home)/program/date/include

function.o:

cc -c function.c -i$(home)/program/date/include

clean:

rm change $(object)

說明:

這裡是使用unix下的cc編譯器,當然也能換成gcc

最後生成的可執行檔名:change

源程式檔案:main.c function.c

.**件(標頭檔案)所在目錄:$(home)/program/date/include

中間目標檔名:main.o function.o

當在shall中執行命令:

make clean
將會執行

rm change $(object)
刪除檔案: change main.o function.o

語句:

mv change $(home)/bin
將最終生成的可執行檔案移動到

$(home)/bin
這一步可以不要,但這樣符合目錄管理規範,而且$(home)/bin一般在環境變數path中有設定,這樣可以在任意目錄下時也能執行可執行檔案。

注意:makefile編輯時另起一行,注意不能用空格,要用tab鍵,否則會報錯

makefile裡面的注釋用#,其它都會報錯

makefile簡單介紹

makefile是用於自動編譯和鏈結的,乙個工程有很多檔案組成,每乙個檔案的改變都會導致工程的重新鏈結,但是不是所有的檔案都需要重新編譯,makefile中紀錄有檔案的資訊,在make時會決定在鏈結的時候需要重新編譯哪些檔案。

makefile的宗旨就是:讓編譯器知道要編譯乙個檔案需要依賴其他的哪些檔案。當那些依賴檔案有了改變,編譯器會自動的發現最終的生成檔案已經過時,而重新編譯相應的模組。

例項3:

.phony: all clean

all : main

main : main.o a.o b.o

\tab\ g++ -o main main.o a.o b.o

main.o : main.cpp b.h

\tab\ g++ -o main.o -c main.cpp

a.o : a.cpp a.h

\tab\ g++ -o a.o -c a.cpp

b.o : b.cpp b.h a.h

\tab\ g++ -o b.o -c b.cpp

clean:

\tab\ @rm -f a.o b.o main.o main

SQL WHERE IN引數化編譯寫法簡單示例

前言 最近在一次使用sql中的where in語句時,造成了一些非預期的查詢結果。尤其是在 中去編寫並執行sql語句時,會出現一些意外情況。再查閱了一些資料以及手動測試後,發現是自己sql語句寫法存在問題,在此記錄。例子業務需求,需要通過sql語句從asset資產表中查詢域名字段在 thief.on...

NSDictionary plist簡單示例

在iphone ipad工程裡面,新增 file other property list,例如 test.plist,然後在其中新增3個專案 key name,date,dept,並填充value值。以下為對此test.plist檔案的一系列常用操作 myname,mydate,mydept為定義的...

NSDictionary plist簡單示例

在iphone ipad工程裡面,新增 file other property list,例如 test.plist,然後在其中新增3個專案 key name,date,dept,並填充value值。以下為對此test.plist檔案的一系列常用操作 myname,mydate,mydept為定義的...