首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成文件(Rake还是Make?)为构建几个具有公共选项的简单库?

生成文件(Rake还是Make?)为构建几个具有公共选项的简单库?
EN

Stack Overflow用户
提问于 2013-12-13 05:06:31
回答 1查看 317关注 0票数 0

因此,我在C和C++中有一组不同的库,我需要用一些常见的选项来构建它们。我当前的“模板”makefile看起来如下所示:

代码语言:javascript
复制
#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这样的可以处理这个问题的示例构建文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-21 16:58:04

最后,我用Ruby编写了我自己的一些讨厌的东西,以便轻松地完成这个任务。你可以从这里得到灵感:https://github.com/Earlz/make-wiring/blob/master/build.rb

基本上,它由一个包含许多环境变量的“模板”makefile组成。build.rb脚本只是将它们传递给makefile,而不必手动指定命令行中的所有内容。因此,用法如下所示:

代码语言:javascript
复制
./build.rb build redbot
./build.rb build arduino

或者别的什么,所有的标志和参数都整齐地包含在build.rb中,而不是分散在几十个makefile中,或者在命令行上手动指定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20559463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档