DESTDIR?=/usr
PREFIX?=/local
SRC = world.c hello.c
OBJ = $(SRC:.c=.o)
all : hello
#依赖关系是从上往下,所以执行方向是从下往
#输出可执行文件名字是由 all 后的target决定的,跟这个 -o 没有关系
#$@ 值所有目标文件的集合."-o $@ $(OBJ)" 很让人迷糊,可以简单总结为
#".c.o:..." 相当于 gcc -c *.c
#"wiringpid:..." 相当于 gcc -o wiringpid *.o (链接库参数意义不变)
hello: $(OBJ)
@echo [LINK]
@gcc -o $@ $(OBJ)
.c.o:
@echo [compile] $<
@gcc -c $< -o $@
.PHONY:clean
clean:
@echo "[clean]"
@rm -f $(OBJ) hello
.PHONY: install
install: hello
@echo "[stalling]"
@mkdir -p $(DESTDIR)$(PREFIX)/sbin
@cp hello $(DESTDIR)$(PREFIX)/sbin/hello
@chown root.root $(DESTDIR)$(PREFIX)/sbin/hello
.PHONY :uninstall
uninstall :
@echo "[uninstalling]"
@rm -f $(DESTDIR)$(PREFIX)/sbin/hello
# @rm -f $(DESTDIR)$(PREFIX)/man/man8/hello.8
.PHONY:depend
depend:
# makedepend -Y $(SRC)