我最近在 CMU 的操作系统设计课程中浏览了包含这些代码行的 makefile。
$(TEST_PROGS) tests/verify_test: %: %.o libtraceback.a
$(CC) -o $@ $@.o -L. libtraceback.a $(CFLAGS) $(LDFLAGS) $(LIBS) -static
python ./symtabgen.py $@
我不明白“%:”在这里可能意味着什么。TEST_PROGS 变量包含列表 traceback/traceback_globals.o traceback/traceback.o
制作 libtraceback.a 时需要 traceback/traceback_globals.o traceback/traceback.o
我什至玩弄删除 %.o。这样做会阻止 TEST_PROGS 对象编译
删除 %: 但保留 %.o 给出了几个警告并且没有编译。
我希望有人可以在这里对makefile的语法有所了解。快速谷歌搜索显示 %: 与二次扩展有关。但是在我正在查看的这段代码中,未定义特殊目标 .SECONDEPANSION 。
请帮忙,这段代码让我的大脑受伤了......