0

在我的项目下,我有 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?

4

1 回答 1

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 ,但这可能会起作用。我还没有尝试过。

于 2013-08-16T18:09:18.637 回答