2

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

我检查 JAVA_HOME 是否在 Makefile 的环境中使用

ifeq (undefined,$(origin JAVA_HOME))
#CALL with defaults
else
#CALL according to the variable
endif

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

else without if
endif without if

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

这个想法还允许在运行 make 之前设置/更改变量以轻松针对不同的 JDK。

4

1 回答 1

4

我认为正确的方法是:

依赖于$(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
于 2013-03-12T19:59:28.493 回答