makefile实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#.PHONY:cleanall cleanobj cleandiff
 
 
#cleanall:cleandiff cleanobj
#   rm program
 
#cleanobj:
#   rm obj.c
#   echo 'cleaning........'
#cleandiff:
#   rm diff.c
 
#命令cd和pwd同时执行
exec1:
    cd ../
    pwd
 
#先执行命令cd再执行pwd
exec2:
    cd ../;pwd
foo := a.o b.o c.o
bar := $(foo:.o=.c)
 
#替换函数
exec3:
    echo '$(bar)'
a := afrom
b := $(subst from,to,$a)
exec4:
    @echo '$b'
 
#取所在目录路径
 
dirs := $(dir src/foo.c hacks)
exec5:
    @echo '$(dirs)'
 
 
#取文件名后缀
suf1 := $(suffix a.c a.o)
exec6:
    @echo '$(suf1)'
 
#取前缀
bas = $(basename foo.x a.o)
exec7:
    @echo '$(bas)'
 
#添加后缀
addsux = $(addsuffix .c,foo bar)
exec8:
    @echo '$(addsux)'
 
#添加前缀
addpre = $(addprefix aa,foo bar)
exec9:
    @echo '$(addpre)'
 
#字串连接函数
pjoin = $(join aa, bb cc)
exec10:
    @echo '$(pjoin)'
 
#查找字串函数
findstr = $(findstring ab,dddabf)
exec11:
    @echo '$(findstr)'
 
#过滤函数
sources:=foo.c bar.c baz.s ugh.h
ss=$(filter %.c %.s,$(sources))
exec12:
    @echo '$(ss)'
 
#循环函数
names := a b c d
#表示将names的值依次放进n中,然后以.o的形式输出
files := $(foreach n,$(names),$(n).o)
exec13:
    @echo '$(files)'
 
reverse = $(2)$(1)
foo = $(call reverse,a,b)
exec14:
    @echo '$(foo)'
reverse = $(2)$(1)
foo = $(call reverse,a,b)
exec15:
    @echo '$(foo)'
 
#查看变量的类型
aa = $(origin CC)
exec16:
    @echo '$(aa)'
  

  

posted @   轻轻的吻  阅读(292)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示