標(biāo)題: 實用型makefile模版 [打印本頁]

作者: liuda    時間: 2015-1-23 19:16
標(biāo)題: 實用型makefile模版
將makefile放入項目的頂層目錄,會自動去查找所有子目錄的c、s、S、h文件。適合小項目工程編譯,如果項目大,目錄、文件多,編譯效率會比較慢。

#*****************************************************************************
#
# Copyright 2012 UU_Dou <UU_Dou@163.com>
# Date: 2012-11-23
#
#*****************************************************************************

VERSION = 1
PATCHLEVEL = 0
SUBLEVEL = 0

PROJECT_VERSION=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)

ELF_TARGET=main.elf

ARCH             = I386
CROSS_COMPILE     =
COMPILE_PRIOR     = -O2
COMPILE_CFLAGS     = -c
DEBUG_CFLAG     = -g

$(ARCH)_CFLAGS = -Wpointer-arith -Wstrict-prototypes -Wundef -pipe -Wall

CC            = $(CROSS_COMPILE)gcc
AR            = $(CROSS_COMPILE)ar
LD            = $(CROSS_COMPILE)ld
OBJDUMP        = $(CROSS_COMPILE)objdump
READELF        = $(CROSS_COMPILE)readelf
OBJCOPY        = $(CROSS_COMPILE)objcopy
NM            = $(CROSS_COMPILE)nm
RM             = $(CROSS_COMPILE)rm

C_SOURCES := $(shell find ./ -name "*.c")
S_SOURCES := $(shell find ./ -name "*.[Ss]")
H_INCLUDES := $(shell find ./ -name "*.[hH]")

OBJECTS := $(subst .c,.o,$(C_SOURCES))
OBJECTS += $(subst .s,.o,$(S_SOURCES))
OBJECTS += $(subst .S,.o,$(S_SOURCES))

$(ELF_TARGET) : $(OBJECTS)
    @set -e
    @$(CC) $< -o $@
    @echo "complie OK"

$(OBJECTS):$(C_SOURCES)
    @echo "compling $(shell basename $<)"
    @set -e
    @$(CC) $< $($(ARCH)_CFLAGS) $(COMPILE_CFLAGS) $(COMPILE_PRIOR) $(DEBUG_CFLAG) -o $@

clean:
    $(shell if [ -e $(ELF_TARGET) ]; then $(RM) $(ELF_TARGET); fi)
    $(shell if [ -e $(OBJECTS) ]; then $(RM) $(OBJECTS); fi)
    @echo "clean $(ELF_TARGET)"
    @echo "clean $(filter %.o,$(OBJECTS))"


       #makefile






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1