0

を利用したプログラムがありますboost_regex。ライブラリboost_regexには、使用しているブーストのバージョンに関して異なる名前の未定義のシンボルがあります。たとえば、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.]))
...

ここで私の問題は、ユーザーのブーストのバージョンが 48 の場合、シンボルの名前u_tolower_49u_tolower_48.

ユーザーが使用しているブーストのバージョンに関係なく、configure.ac を微調整して構成が失敗するようにするにはどうすればよいですか?

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 に答える