关于Makefile终极目标的问题

rjw_999 2018-05-31 10:05:12
现有资料上说makefile中的第一个目标是终极目标,但是我有一个软件生成的makefile

MAKE=make
RM=rm
MKDIR=mkdir

OUTDIR=Debug
OUTFILE=../Produce/DemoEXE/SendDemo
CFG_INC=-I../Produce/Library -I../Produce/DemoSrc
CFG_LIB=-lm -lpthread -lutsdk
CFG_OBJ=
COMMON_OBJ=$(OUTDIR)/helper.o $(OUTDIR)/send.o
OBJ=$(COMMON_OBJ) $(CFG_OBJ)
ALL_OBJ=$(OUTDIR)/helper.o $(OUTDIR)/send.o -lm -lpthread -lutsdk

COMPILE=gcc -c -g -o "$(OUTDIR)/$(*F).o" $(CFG_INC) $<
LINK=gcc -g -L ../Produce/Library -o "$(OUTFILE)" $(ALL_OBJ)

# Pattern rules
$(OUTDIR)/%.o : ../Produce/DemoSrc/%.c
$(COMPILE)

# Build rules
all: $(OUTFILE)

$(OUTFILE): $(OUTDIR) $(OBJ)
$(LINK)

$(OUTDIR):
$(MKDIR) -p "$(OUTDIR)"

# Rebuild this project
rebuild: cleanall all

# Clean this project
clean:
$(RM) -f $(OUTFILE)
$(RM) -f $(OBJ)

# Clean this project and all dependencies
cleanall: clean





按道理说第一个目标应该是$(OUTDIR)/%.o : ../Produce/DemoSrc/%.c(DemoSrc目录里有多个.c文件),但是实际make(不加任何参数,不设置任何环境变量)时,却是以all为目标,但是all不是第一个目标啊,莫非$(OUTDIR)/%.o 形式的目标不算数?
...全文
1118 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckc 2018-06-02
  • 打赏
  • 举报
回复
makefile的书比较少,我只买过一本什么gnu make之类的,书写的好差 组织的乱七八糟的 基本的东西写几次就知道了,复杂点的遇到问题再慢慢摸索吧
rjw_999 2018-05-31
  • 打赏
  • 举报
回复
引用 1 楼 ckc 的回复:
是的,那种不算数,那种叫规则
规则和目标有什么区别啊?a.o:a.c就是目标吧?带%的就是规则。刚学makefile,不太懂,百度也讲的不清楚,谢了
ckc 2018-05-31
  • 打赏
  • 举报
回复
是的,那种不算数,那种叫规则
rjw_999 2018-05-31
  • 打赏
  • 举报
回复
引用 3 楼 ckc 的回复:
目标就是你要编译的东西 规则就是从源编译出这些目标应该怎么做 带了通配符的肯定是规则了
是不是说a.o:a.c是目标 %.o:%.c就是规则了? 有没有讲到这个的资料?我查的书里都没写这些,谢了
ckc 2018-05-31
  • 打赏
  • 举报
回复
目标就是你要编译的东西 规则就是从源编译出这些目标应该怎么做 带了通配符的肯定是规则了

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧