鐵血聯盟2原始碼學習筆記 Makefile邊看邊學

2021-08-22 19:01:49 字數 1279 閱讀 8641

有了一定的基礎,閱讀乙個大型的專案,我想這也是乙個不錯的學習途徑吧。

這只是乙個學習筆記,只記下那些我之前不了解,看了原始碼後現學的知識。

我的學習方法是下了gnu make 和 gcc的幫助文件,通過index快速查詢需要的知識點。

1config ?= config.default

2-include$(config)

這兩行的意思是包含乙個名為config.default的檔案。這個檔案中定義了像編譯何種語言版本,資料資料夾data的位置等資訊。

make中給變數賦值有很多種方法,像=, ?=, := ......, ?=的意思是如果變數沒定義過,就賦值。

include是包含檔案,而-include是如果不存在這個檔案,也不輸出錯誤資訊。

看來這個檔案是可有可無的了,起碼不影響編譯程式,否則為什麼要用?=和-include呢?

5ifeq($(findstring$(lng), dutch english french german italian polish russian russian_gold),)

6$(error lng must be set to one of dutch, english, french, german, italian, polish, russian or russian_gold. copy config.template to config.default and uncomment one of the languages)

7endif

乙個判斷語句,看看要編譯成什麼語言。

make的條件判斷語句

ifeq(exp, val)

dosomething

endif

make的函式呼叫形式retval $(function arguments)

findstring函式的定義是retval $(findstring find, in) ; find : 找什麼(單詞,用空格隔開) in : 在**找 retval : 找到的單詞

因此第五行的意思是在lng這個字串裡找是不是有dutch,english.....這些語言,沒找到(值為空),輸出錯誤資訊,停止執行make。

47cflags += -wwrite-strings

49cflags += -dja2

cflags是編譯選項。-w在gcc中用來設定輸出那些警告資訊。47行的意思是當程式寫字串時輸出警告。-d是在預編譯階段定義常量(#define)。49行相當於程式檔案中的#define ja2

太晚了,明天繼續。

鐵血聯盟2原始碼學習筆記 Makefile邊看邊學

有了一定的基礎,閱讀乙個大型的專案,我想這也是乙個不錯的學習途徑吧。這只是乙個學習筆記,只記下那些我之前不了解,看了原始碼後現學的知識。我的學習方法是下了gnu make 和 gcc的幫助文件,通過index快速查詢需要的知識點。1 config config.default 2 include c...

學習筆記 解讀CppUnit原始碼2

上次我詳細的剖析了與test.h相互關聯的 test類是cppunit的核心。test這個類相信看了上一章就知道,也就起到測試用例的作用,但是畢竟乙個類的功能有限,如何擴充test類的功能呢?下面裝飾者模式就登場了。testdecorator.h 這個類中儲存了乙份test的指標,這個類的count...

Feign學習筆記2 原始碼解讀

spring cloud netflix feign,這個是feign的全名。spring官網上是沒有feign這個專案存在的,feign是作為netflix的乙個子專案存在。netflix包涵eureka zuul ribbon feign hystrix hystrix dashboard tu...