как заставить automake условно выбирать пакет src?

В моем проекте у меня есть 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 

как мне определить Micros в configure.ac или файле * .m4?


person jimmy.cao    schedule 16.08.2013    source источник


Ответы (1)


Вам, вероятно, следует взглянуть на макрос 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
configure --with-softA-version=1.5.2
2], [test "$softA_version" = "1.5.2"]) AM_CONDITIONAL([BUILD_SOFTA_1AC_SUBST4], [test "$softA_version" = "1.6.4"]) AM_CONDITIONAL([BUILD_SOFTA_1AM_CONDITIONAL2], [test "$softA_version" = "1.7.2"]) ...

и в Makefile.am:

if BUILD_SOFTA_1
configure --with-softA-version=1.5.2
2 SUBDIRS = package1 endif if BUILD_SOFTA_1AC_SUBST4 SUBDIRS = package2 endif if BUILD_SOFTA_1AM_CONDITIONAL2 SUBDIRS = package3 endif

и вызывается как:

configure --with-softA-version=1.5.2

Возможно, вы сможете AC_SUBST имя пакета напрямую вместо использования AM_CONDITIONAL, но это, вероятно, сработает. Но я не пробовал.

person ldav1s    schedule 16.08.2013