有了一定的基础,阅读一个大型的项目,我想这也是一个不错的学习途径吧。
这只是一个学习笔记,只记下那些我之前不了解,看了源码后现学的知识。
我的学习方法是下了GNU Make 和 GCC的帮助文档,通过Index快速查找需要的知识点。

1CONFIG ?= config.default
2- include $(CONFIG)

这两行的意思是包含一个名为config.default的文件。这个文件中定义了像编译何种语言版本,数据文件夹Data的位置等信息。
Make中给变量赋值有很多种方法,像=, ?=, := ......, ?=的意思是如果变量没定义过,就赋值。
include是包含文件,而-include是如果不存在这个文件,也不输出错误信息。
看来这个文件是可有可无的了,起码不影响编译程序,否则为什么要用?=和-include呢?

5 ifeq ($( 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)
7 endif

一个判断语句,看看要编译成什么语言。
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边看边学相关推荐

  1. 铁血联盟2源码学习笔记--Makefile边看边学3

    话接上篇 491    .c.d: 492        @echo '===> DEP $<' 493        $(Q)$(CC) $(CCFLAGS) -MM $< | s ...

  2. 铁血联盟2源码学习笔记--Makefile边看边学2

    话接上篇 116 SRCS := 117 SRCS += Build/AniViewScreen.cc 这里又出现了一个设置符':='.与常见的编程语言不一样,'='后如果接别的变量,这个右值变量是不 ...

  3. Java多线程之JUC包:Semaphore源码学习笔记

    若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5625536.html Semaphore是JUC ...

  4. RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?

    RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 文章目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目 ...

  5. Vuex 4源码学习笔记 - 通过Vuex源码学习E2E测试(十一)

    在上一篇笔记中:Vuex 4源码学习笔记 - 做好changelog更新日志很重要(十) 我们学到了通过conventional-changelog来生成项目的Changelog更新日志,通过更新日志 ...

  6. Vuex 4源码学习笔记 - Vuex是怎么与Vue结合?(三)

    在上一篇笔记中:Vuex源码学习笔记 - Vuex开发运行流程(二) 我们通过运行npm run dev命令来启动webpack,来开发Vuex,并在Vuex的createStore函数中添加了第一个 ...

  7. jquery源码学习笔记三:jQuery工厂剖析

    jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...

  8. 雷神FFMpeg源码学习笔记

    雷神FFMpeg源码学习笔记 文章目录 雷神FFMpeg源码学习笔记 读取编码并依据编码初始化内容结构 每一帧的视频解码处理 读取编码并依据编码初始化内容结构 在开始编解码视频的时候首先第一步需要注册 ...

  9. Apache log4j-1.2.17源码学习笔记

    (1)Apache log4j-1.2.17源码学习笔记 http://blog.csdn.net/zilong_zilong/article/details/78715500 (2)Apache l ...

最新文章

  1. 1.4 以查询取代临时变量
  2. android 关闭多点触控_Cocos Creator关闭多点触摸的问题
  3. 阿里云服务器端口开放对外访问权限
  4. 编程之美-翻烙饼Java实现
  5. PHP中获取数组中单列的值
  6. 关联与依赖区别理解(原)
  7. 使用 UICollectionView 实现网格化视图效果
  8. springboot+mybais+mabatisplus(swagger)实现增删改查接口
  9. chrome的视频播放加速功能也太好用了。
  10. SpringBoot报错Shutting down ExecutorService ‘applicationTaskExecutor‘解决方法
  11. 商贸批发进销存管理软件,仓库条码管理,库存管理。采购入库单,供应商档案管理。
  12. win7虚拟机VCMI无法自动安装驱动程序
  13. 邮件工具-MailUtil(发送邮件)
  14. 区块链开发用什么语言呢?区块链与编程语言的关系
  15. Coursera视频无法播放解决办法
  16. 数据结构视频教程 -《[猎豹网校]数据结构与算法_C#语言》
  17. 《从程序员到项目经理》读后感-直率
  18. 投资日记 11.2中心从科技板逐渐转换到食品版块
  19. Android实现重力小球
  20. html隐藏电话中间几位,ios 手机号码隐藏中间4位为*号

热门文章

  1. 计算机网路之入门篇笔记
  2. 爱奇艺APP全面适配iOS 14 首批支持画中画功能 追剧聊天两不误
  3. 设备点检巡检系统助力企业提高设备生产率
  4. vue解决图片加载失败显示默认图片的方法
  5. 华为QinQ简单配置
  6. 查看iOS设备UDID
  7. Ubuntu20.04 设置开机自启
  8. unity设置字体大小
  9. 第959期机器学习日报(2017-05-04)
  10. 我去!看完这份Spring Boot笔记,成功教面试官做人