通过automake检查make中的环境变量

时间:2013-03-12 18:09:04

标签: makefile environment-variables autotools automake

有没有办法让条件传递给automake,以便稍后将其传递给生成的Makefile.in和Makefile?

我检查是否在Makefile中使用

在环境中定义了JAVA_HOME
ifeq (undefined,$(origin JAVA_HOME))
#CALL with defaults
else
#CALL according to the variable
endif

但是当我使用automake在Makefile.am中处理它时,我得到了两个错误:

else without if
endif without if

看起来automake不会消化ifeq。有没有办法通过它传递它(如果这样做有意义),还是有另一种autotools友好的方式来获得相同的结果?

这个想法也是允许在运行make之前设置/更改变量以轻松定位不同的JDK。

1 个答案:

答案 0 :(得分:3)

我认为这是正确的方式:

依靠在$(JAVA_HOME)中设置的Makefile.am,并确保configure设置合理的值。

回答问题:

因为automake想要生成适用于POSIX make的Makefile,所以它对GNU-make条件不起作用。

所以你在configure.ac进行测试:

AC_SUBST([JAVA_HOME])
AM_CONDITIONAL([JAVA_HOME_SET], [test ! -z "$JAVA_HOME"])

然后在Makefile.am中:

if JAVA_HOME_SET
## Something that relies on JAVA_HOME
else
## Defaults
endif