0

我有一个使用boost_regex. 该库boost_regex有一个未定义的符号,其名称与我使用的 boost 版本不同。例如,当我使用 boost 版本 1.49 时,libboost_regex.so包含一个未定义的符号,称为u_tolower_49. 这个符号可以在 中找到libicuuc.so

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

配置.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 版本如何?

4

1 回答 1

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.])
    ])
])
于 2012-10-01T20:31:47.723 回答