【发布时间】:2014-01-22 00:58:04
【问题描述】:
所以,我有一组不同的 C 和 C++ 库,我需要使用一些常用选项来构建它们。我当前的“模板”makefile 看起来像这样:
#Change this for different MCUs. Standard includes atmega328
VARIANT = ../variants/standard
HDRS=RedBot.h
OBJS=RedBot.o RedBotAccel.o RedBotMotor.o RedBotSensor.o
CPPFLAGS = -I../arduino/ -I./ -DF_CPU=16000000UL -Os -mmcu=atmega328p
CC=avr-gcc
CPP=avr-g++
AR=avr-ar
default: libredbot.a
libredbot.a: ${OBJS}
${AR} crs libredbot.a $(OBJS)
.c.o: ${HDRS}
${CC} -I ${VARIANT} ${CFLAGS} -c $*.c
.cpp.o: ${HDRS}
${CPP} -I ${VARIANT} ${CPPFLAGS} -c $*.cpp
clean:
rm -f ${OBJS} core a.out errs *.a
我将 makefile 与所有源文件放在同一个文件夹中。但是,由于几个原因,这很丑陋。一方面,它只是一个模板。我必须在大约 15 个库中复制它。而且我需要在所有库中轻松更改编译选项,因为多个目标很常见。目前,我能想到的最好的事情是制作一个根 makefile,并将选项传递给每个库 makefile。但是,我仍然需要跟踪所有文件(OBJS 位)。并非所有库都能够在所有目标上构建。
有人可以指点我一个更全面的 makefile,或者可能是 Rake 之类可以处理此问题的示例构建文件吗?
【问题讨论】:
标签: c makefile rake build-process