Makefile 中各种函数列举(进行 ing)

1.wildcard : 扩展通配符    notdir : 去除路径    patsubst :替换通配符

举例:有文件  /a.c   /b.c   /home/a.c   /home/b.c  /home/k.o

src=$(wildcard *.c ./home/*.c)
file=$(notdir $(src))
obj=$(patsubst %.c,%.o,$(src) )

src= a.c b.c   /home/a.c   /home/b.c 

file= a.c b.c  a.c b.c 

obj= a.o b.o /home/a.o  /home/b.o

2.find   目录   -name   文件     查找目录下  文件具体位置  绝对位置

3.dirname  获取对应的目录     basename   去掉文件名的目录和后缀(好像是linux的不是Makefile)

举例:  dirname  /etc/init.d/rcS    => /etc/init.d 

     dirname  /etc/init.d           =>/etc

     basename   /home/abc.k/a.c => a

     basename /home/abc.k/   =>abc.k

   $(dir /etc/init.d/rcS )           => /etc/init.d
   $(dirname /etc/init.d/rcS )           => "" 

4.  lastword   firstword  如字面意思   分别为取最后一个单词和第一个单词

5.make    -C $(aaa) M=$(bbb) 

 -C表示跳转到aaa下的读取下面的Makefile

  M=  表明执行后跳转到bbb目录下

6. 单引号和双引号的区别:单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括①美元符号②反引号③反斜杠,这3种特殊字符将不被忽略。 不忽略美元符号意味着shell在双引号内部可进行变量名替换。

反引号将字符串做命令行处理

7.--start-group和--end-grou     ld

正常情况,链接的时候库文件只会按出现在命令行的顺序搜索一遍,如果包里有未定义的引用标号,而且该包却被放在命令行的后面,这样链接器就无法解决该标号的引用问题。通过给包分组,这些包可以被循环搜索直到所有的引用都可以解决为止。使用该选项将降低性能。只有在无法避免多个包之间互相引用的情况下才使用
 

8. $(sort LIST) 

排序函数,去掉重复

9.$(SRC:%.c=%.o)

将SRC变量中所有以.c结尾的文件名替换成以.o结尾的文件名,并将其重新赋值给SRC

10. $(foreach <var>,<list>,<text>)

<var>;是一个变量名,<list>;可以是一个表达式,而<text>;中一般会使用<var>;这个参数来依次枚举<list>;中的单词。

举例: names := a b c d
    files := $(foreach n,$(names),$(n).o)

依次遍历names中字符,存到变量‘n’中,然后将变量每个值改为$(n).o,输出依次为a.o b.o d.o d.o 中间空格隔开

11.$(addsuffix .SUFFIX,NAMES)

NAMES添加后缀.SUFFIX  例如:$(addsuffix .c,a) 输出a.c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀想天空2011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值