第一章 变量
(1)变量赋值:
SDK_PATH := /home/knief/SDK
INC_PATH := -I$(SDK_PATH)/include #平台sdk头文件目录
INC_PATH += -I$(SDK_PATH)/include/SDL #sdl头文件目录
OPT_LINK := -L$(SDK_PATH)/lib
# gcc的Wl选项表示把其后逗号分隔options传给链接器
# 链接器ld的选项-rpath-link
# -rpath-link directory
# 某些共享库可能需要其他共享库. 这种情况一般发生在某个 ld -shared连接中, 输入文件包含了共享库.
# 如果linker遇到这样的依赖情况, 当它执行非共享,不可重定位的连接时, linker 将自动寻找所需的共享库,
# 如果它们没有被显明包含, 就把它们包含到连接中.
# 在这种情况下, -rpath-link选项指定了最先搜索的目录集.
# -rpath-link 能够指定一批目录, 目录用冒号隔开. 也可以用这些目录名作为参数, 重复使用这个选项.
# 如果没有找到需要的共享库, linker 产生一个警告, 但是继续连接.
OPT_LINK += -Wl,-rpath-link -Wl,$(SDK_PATH)/lib
# 当前路径
TARGET_PATH=$(shell pwd)
第二章 包含
#include my_test.mk #my_test.mk是一个特定于某个的Makefile
第三章 函数
GNU make函数的调用格式类似于变量的引用,以“$”开始表示一个引用。语法格式如下:
$(FUNCTION ARGUMENTS)
或者:
${FUNCTION ARGUMENTS}
$(dir NAMES…)
函数名称:取目录函数—dir。
函数功能:从文件名序列“NAMES…”中取出各个文件名的目录部分。文件名的目录部分就是包含在文件名中的最后一个斜线(“/”)(包括斜线)之前的部分。
返回值:空格分割的文件名序列“NAMES…”中每一个文件的目录部分。
函数说明:如果文件名中没有斜线,认为此文件为当前目录(“./”)下的文件。
示例:
$(dir src/foo.c hacks)
返回值为“src/ ./”。
$(addprefix PREFIX,NAMES…)
函数名称:加前缀函数—addprefix。
函数功能:为“NAMES…”中的每一个文件名添加前缀“PREFIX”。参数“NAMES…”是空格分割的文件名序列,将“SUFFIX”添加到此序列的每一个文件名之前。
返回值:以单空格分割的添加了前缀“PREFIX”的文件名序列。
函数说明:
示例:
$(addprefix src/,foo bar)
返回值为“src/foo src/bar”。