Makefile 在make-through automake中检查环境变量

Makefile 在make-through automake中检查环境变量,makefile,environment-variables,autotools,automake,Makefile,Environment Variables,Autotools,Automake,有没有办法让一个条件通过automake传递给生成的Makefile.in和Makefile 我使用 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。是否

有没有办法让一个条件通过automake传递给生成的Makefile.in和Makefile

我使用

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。是否有一种方法可以让它通过(如果这样做有意义的话),或者是否有另一种自动工具友好的方法可以获得相同的结果

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

我认为正确的方法是: 依靠在
Makefile.am
中设置的
$(JAVA\u HOME)
,并确保通过
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
我认为正确的方法是: 依靠在
Makefile.am
中设置的
$(JAVA\u HOME)
,并确保通过
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