多層目錄Makefile

今天結合網上的一個例子,自己寫了一個可適用於多層目錄的Makefile。


ARCH= armv5l-linux-
CC= $(ARCH)gcc
LD = $(ARCH)ld
AS = $(ARCH)as
CPP = $(ARCH)g++
AR = $(ARCH)ar
CFLAGS= -g -O2 -D_GNU_SOURCE -DHAVE_CONFIG_H

LIBS= -lpthread -lrt -lm
INCLUDE= -I.

APPDIR= $(PWD)
APPINCH=$(shell find $(APPDIR) -name "*.h*")
TMPDIR=$(dir $(APPINCH))
APPINCDIR=$(sort $(TMPDIR))
INCLUDE += $(foreach temp, $(APPINCDIR), -I$(temp))
SRC=$(shell find $(APPDIR) -name '*.c')
APP=$(SRC:%.c=%.o)

all:    main

$(APP): %.o: %.c
    $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@

main: clean $(APP)
     $(CC) -o $@ $(LIBS) $(INCLUDE) $(APP)

clean:
    -rm -rf $(APP)
    -rm -f main

.PHONY: clean

可以搜索路徑下的源文件和頭文件,最後生成一個可執行程序。


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