有人可以帮我弄清楚下面的make文件吗?
BINS=file1 file2 file3 all: $(BINS) clean: rm -f $(BINS) *~ $*: $@.c gcc -g -o $@ $?
这是我的问题:
什么是gcc的-g选项?
什么是$*和$ @
如何知道执行最后一个目标?
谢谢!
来自gcc
和make
文档:
"-g以操作系统的本机格式生成调试信息".
一个."$*与隐式规则匹配的词干(参见模式匹配).如果目标是dir/a.foo.b且目标模式是.%.b那么词干是dir/foo.词干是用于构造相关文件的名称.在静态模式规则中,词干是文件名的一部分,与目标模式中的'%'匹配."
湾 "$ @规则目标的文件名.如果目标是归档成员,则'$ @'是归档文件的名称.在具有多个目标的模式规则中(请参阅模式规则简介), '$ @'是导致规则命令运行的任何目标的名称."
C."$?比目标更新的所有先决条件的名称,它们之间有空格." (没问,但值得补充.)
"'all'编译整个程序.这应该是默认目标."
这个例子makefile有点受限,因为它似乎只构建C程序.在GNU化妆有几个是学习如何写的makefile有用的大量例子.