makefile_example

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章