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)