在我的项目中,我有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?
答案 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
但这可能会奏效。我没试过。