如何让automake有条件地选择一个src包?

时间:2013-08-16 06:53:59

标签: autotools autoconf automake

在我的项目中,我有3个源代码包,比如package1,package2,package3。其中一个将根据依赖软件(例如softA)版本进行编译。

如果我输入'./configure --softA-version = 1.7.2',我希望将选择package3。

在makefile.am中,它可能看起来像

if "softA_version" == "1.5.2"; then
    SUBDIRS = package1
else if "softA_version == "1.6.4"; then
    SUBDIRS = package2
else if "softA_version" == "1.7.2"; then
    SUBDIRS = package3
endif 

我应该如何在configure.ac或* .m4文件中定义Micros?

1 个答案:

答案 0 :(得分:0)

您应该查看AC_ARG_WITH宏,它几乎与您描述的一样有效:

AC_ARG_WITH([softA-version], [AS_HELP_STRING([--with-softA-version=version],
[use the softA version (default 1.7.2)])],
[softA_version="$withval"],
[softA_version="1.7.2"])

AM_CONDITIONAL([BUILD_SOFTA_1_5_2], [test "$softA_version" = "1.5.2"])
AM_CONDITIONAL([BUILD_SOFTA_1_6_4], [test "$softA_version" = "1.6.4"])
AM_CONDITIONAL([BUILD_SOFTA_1_7_2], [test "$softA_version" = "1.7.2"])

...

Makefile.am

if BUILD_SOFTA_1_5_2
SUBDIRS = package1
endif
if BUILD_SOFTA_1_6_4
SUBDIRS = package2
endif
if BUILD_SOFTA_1_7_2
SUBDIRS = package3
endif

并调用如:

configure --with-softA-version=1.5.2

您可以直接AC_SUBST包名称,而不是使用AM_CONDITIONAL 但这可能会奏效。我没试过。