# Readme:
# use: make config
# use: make dir
# use: make
# use: make clean
# use: make rebuild
# use: make cleanall
# use: make test
# use: make
# firs of all, use "make config" or "make dir" to
# build a source files struct. and then,
# put your source files into the DIR src
# link libs to the DIR lib
SHELL=/bin/sh
CC=gcc
CXX=g++
MAKE=make
MAKE_DIR=$(PWD)
SRC_DIR=$(MAKE_DIR)/src/
OBJ_DIR=$(MAKE_DIR)/obj/
LIB_DIR=$(MAKE_DIR)/lib/
DEBUG_DIR=$(MAKE_DIR)/debug/
RELEASE_DIR=$(MAKE_DIR)/release/
OUTPUT_DIR=
LIB=-L$(MAKE_DIR)/lib/
OUTPUT_FILE=out
OUT=
vpath %.c $(SRC_DIR)
#vpath %.o $(OBJ_DIR)
vpath %.d $(OBJ_DIR)
DEBUG=1
SRC_FILES:=$(wildcard $(SRC_DIR)*.c)
SRC_FILES:=$(notdir $(SRC_FILES))
OBJ_FILES:=$(patsubst %.c,%.o,$(SRC_FILES) )
DEP_FILES:=$(patsubst %.c,%.d,$(SRC_FILES) )
#SRC_FILES:=$(addprefix $(SRC_DIR),$(SRC_FILES))
#OBJ_FILES:=$(addprefix $(OBJ_DIR),$(OBJ_FILES))
DEP_FILES:=$(addprefix $(OBJ_DIR),$(DEP_FILES))
FLAG_DEBUG=-g
FLAG_COMPLE=-c
FLAG_LINK=
ifeq ($(DEBUG),1)
OUTPUT_DIR:=$(DEBUG_DIR)
FLAG_COMPLE:=$(FLAG_COMPLE) $(FLAG_DEBUG)
FLAG_LINK:=
else
OUTPUT_DIR:=$(RELEASE_DIR)
FLAG_COMPLE:=$(FLAG_COMPLE)
FLAG_LINK:=
endif
OUT=$(OUTPUT_DIR)$(OUTPUT_FILE)
$(OUT): $(OBJ_FILES)
@echo 1
@$(CC) $^ -o $@
%.o:%.c %.d
@echo 2.1
@$(CC) $(FLAG_COMPLE) $< -o $@
$(OBJ_DIR)%.d:%.c
@echo 3
@$(CC) $< -MM -MD -o $@
# if the system-libs will always update, please ues this instead for
# $(CC) $< -M -o $@
-include $(DEP_FILES)
config: dir
dir:
mkdir -p $(SRC_DIR)
mkdir -p $(OBJ_DIR)
mkdir -p $(LIB_DIR)
mkdir -p $(DEBUG_DIR)
mkdir -p $(RELEASE_DIR)
clean:
rm -f $(OBJ_DIR)* *.d *.o
rm -f $(OUT)
clear
rebuild: clean all
cleanall:
rm -f $(OBJ_DIR)*
rm -f $(RELEASE_DIR)*
rm -f $(DEBUG_DIR)*
test:
$(OUT)
.PHONY: all config rebuild
#.SUFFIXES:
分享到:
相关推荐
多目录编译、Makefile 三种用法 一定要会的
make文件夹包含了两个子文件夹,a_b子文件夹实现多目标Makefile编译,projects子文件夹实现多层次Makefile文件编译。make文件夹中实现多个Makefile文件编译,即调用a_b和project2子文件夹中Makefile编译。
Makefile不编译已经编译过的文件
android编译系统makefile(Android.mk)写法 Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$(call my-...
arm_gcc编译,makefile自动生成demoarm_gcc编译,makefile自动生成demoarm_gcc编译,makefile自动生成demoarm_gcc编译,makefile自动生成demoarm_gcc编译,makefile自动生成demoarm_gcc编译,makefile自动生成...
Android编译流程makefile流程[参考].pdf
linux编译,makefile, make
支持SDCC编译器的自动编译。使用make或mingw32-make实现目录内全源码自动编译的Makefile。
详细的文字说明在我的QQ空间中: http://user.qzone.qq.com/4409752/blog/1387209065
linux makefile 编写 规则 编译多个文件,是学习makefile 很好的资料,有例子,讲解详细
makefile同时编译多个文件,以tcp通信协议为例,教你一步一步学习makefile
android编译系统makefile(Android.mk)写法.pdf
目录结构,有两个makefile,一个是当前的,另一个就是目录mylibdirectory下的子makefile. 当前目录下的makefile生成 myapp应用程序,它依赖于子makefile生成的mylib.a这个静 态库. 子makefile生成2.o,3.o,最后生成...
这个makefile,在linux环境下可以编译当前目录下所有.c文件,可以把它们编译为可执行文件,或库文件。又通用,又简单.
但是现在不支持离线编译和arm-linux交叉编译,为了快速验证Mace在嵌入式端的性能,故把MACE的源码和依赖提出来,搞了一个可以使用MakeFile进行交叉编译libmace.a的工程,省去了Bazel编译的麻烦。
描述了如何利用命令行编译VC程序、makefile的功能与语法等等,还是比较实用的。
这个压缩包是makefile源文件,实现了怎么把源文件.c编译到指定的目标目录objs。这里面有测试文件和说明。 更详细的资料可以参考 http://hi.baidu.com/20065562/blog/item/8777467e29a00e0229388a58.html
android编译系统makefile(Android.mk)写法.docx
Makefile编译脚本的编写方法