关于Makefile终极目标的问题

rjw_999 rjw_999 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现有资料上说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 形式的目标不算数?
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
rjw_999
Linux/Unix社区 23,224 成员 74,535 内容