makefile学习小记

第一章 变量

(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”。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值