请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1400|回复: 0

Makefile 中$@ $^ $< 解释

[复制链接]

96

主题

6

回帖

108

积分

屌炸天

积分
108
发表于 2017-9-23 14:26:45 | 显示全部楼层 |阅读模式
http://bbs.chinaunix.net/thread-1596089-1-1.html
给个例子你分析一下(来自国内开源项目g-bios
g-bios/app/net/Makefile
----------------------------------------------------------------------------------------------------------------------------------------
OBJS = ifconfig.o tftp_util.o ping.o
SRCS = $(OBJS:.o=.c)

PHONY += all
all : $(BUILT_IN_OBJ)

$(BUILT_IN_OBJ) : $(OBJS)
       $(LD) $(LDFLAGS) -r $^ -o $@

$(OBJS) : $(SRCS)
       $(CC) $(CFLAGS) -c $^

PHONY += clean
clean :
       @rm -vf *.o

.PHONY : $(PHONY)
----------------------------------------------------------------------------------------------------------------------------------------
说明:$(BUILT_IN_OBJ) 和 $(PHONY)来自上层目录g-bios/app/Makefile,可以不用理解。

$@ 代表目标 上例为$(BUILT_IN_OBJ)
$^ 代表所有的依赖对象 上例第一个$^为$(OBJS),即 ifconfig.o tftp_util.o ping.o,上例第二个$^为$(SRCS),即$(OBJS:.o=.c) (Makefile解释后为: ifconfig.c tftp_util.c ping.c)
$< 代表第一个依赖对象 前面例子修改如下:
$(BUILT_IN_OBJ) : $(OBJS)
       $(LD) $(LDFLAGS) -r $< -o $@
则$<表示为ifconfig.o

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc. ( 粤ICP备15088888号-2 )

GMT+8, 2024-3-29 05:00 , Processed in 0.109675 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表