AC_SEARCH_LIBS函数名称变化时

时间:2012-10-01 18:41:29

标签: dll makefile autoconf

我有一个使用boost_regex的程序。库boost_regex有一个未定义的符号,与我正在使用的boost版本的名称不同。例如,当我使用boost版本1.49时,libboost_regex.so包含一个名为u_tolower_49的未定义符号。此符号位于libicuuc.so

显然,如果没有icu的用户编译我的程序,链接阶段将失败,因为该符号丢失。所以我决定将它添加到configure.ac中,以便配置阶段在开始编译之前失败。

configure.ac

...
AC_SEARCH_LIBS([u_tolower_49],[icuuc], , AC_MSG_ERROR([Unable to find icuuc, make sure ICU is installed.]))
...

现在我的问题是,当用户的boost版本为48时,该符号不再被命名为u_tolower_49,而是u_tolower_48

如何调整configure.ac以确保配置失败,无论用户具有哪种版本的boost?

1 个答案:

答案 0 :(得分:1)

嵌套支票:

AC_SEARCH_LIBS([u_tolower_49],[icuuc],[],[
    AC_SEARCH_LIBS([u_tolower_48],[icuuc],[],[
        AC_MSG_ERROR([Unable to find icuuc, make sure ICU is installed.])
    ])
])