找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2204|回复: 0
打印 上一主题 下一主题
收起左侧

实用型makefile模版

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 19:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
将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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表