定义要在Makefile和Shell脚本中使用的变量

时间:2010-08-06 08:44:49

标签: bash variables makefile

我想以一种可以包含在Makefile和shell脚本中的形式分发一组构建变量(有人应该附加到他们的LDFLAGS)。

我现在拥有的是一个文件buildflags.conf:

LDFLAGS_EXTRA="-static -foo -bar"

我希望我的用户能够在使用makefile时使用:

include buildflags.conf
LDFLAGS+=$LDFLAGS_EXTRA

或者,当他们使用shell脚本时,请执行以下操作:

. buildflags.conf
gcc myapp.o -o myapp $LDFLAGS_EXTRA

但这不起作用,因为bash需要在我的LDFLAGS_EXTRA定义周围引用,而make不需要它们。

任何有此解决方案的人?我不想维护多个单独的buildflags文件,尽管从单个定义文件开始并使其适合包含在不同上下文中的一组脚本可以。

2 个答案:

答案 0 :(得分:2)

我认为最简单的解决方案是在make配方中包含包含变量定义的shell脚本(如果您的配方很简单,这样可以正常工作):

target: sources
    . buildflags.conf ; \
    gcc -o $@ $^ $$LDFLAGS_EXTRA

注意变量用法中的额外$以及这两行实际上是一个语句的事实,;\很重要。

答案 1 :(得分:1)

Ivo在他的评论中的解决方案将我带到了另一个也适用于Makefile的规范:

1)在问题

中定义LDFLAGS_EXTRA

2)发布处理列表以在Makefile中使用

LDFLAGS_EXTRA_POST=$(subst ",,${LDFLAGS_EXTRA})

3)确保仅在Makefile中引用LDFLAGS_EXTRA_POST