Сборка boost.locale с icu на OS X

#c #boost

#c #повышение

Вопрос:

Я пытаюсь создать boost.locale для пользовательской сборки ICU. Я загрузил и создал ICU как статические библиотеки в /opt/icu53.1. Однако, когда я пытаюсь создать boost.locale, он жалуется, что не может найти ICU.

 ./b2 toolset=clang -sICU_PATH=/opt/icu53.1 --with-locale boost.locale.iconv=off boost.locale.icu=on stage 

  Boost.Locale needs either iconv or ICU library to be built
 

Я попытался создать ICU как динамические библиотеки в /opt/icu53.1_dynamic. Но boost не видит ICU даже с этими

 ./b2 toolset=clang -sICU_PATH=/opt/icu53.1dynamic --with-locale boost.locale.iconv=off boost.locale.icu=on stage
 Boost.Locale needs either iconv or ICU library to be built
 

Есть идеи о том, как заставить boost видеть ICU в указанном месте? Спасибо

Комментарии:

1. вы пробовали --reconfigure вариант b2? Я думаю, что в противном случае он кэширует «icu: нет».

2. Привет, Артур, спасибо за комментарий. Прошло много времени с тех пор, как я пробовал это (я больше не использую ICU в своем проекте). Если я вернусь к опробованию boost, я попробую это сделать

Ответ №1:

Для меня работают эти строки для Boost 1.64.0:

 ./bootstrap.sh 
    --with-icu=${ICU_DIR} 
    --prefix=${BOOST_PREFIX};

./b2 
    --prefix=${BOOST_PREFIX} 
    --reconfigure boost.locale.iconv=off boost.locale.icu=on 
    -sICU_PATH=${ICU_DIR};
 

И для Boost 1.74.0:

 ./bootstrap.sh 
    toolset=darwin 
    macosx-version=${VALUE_MACOS_VERSION} 
    macosx-version-min=${VALUE_MACOS_MIN_VERSION} 
    --with-icu=${ICU_DIR};

./b2 
    toolset=darwin 
    cxxflags="$VALUE_CXXFLAGS" 
    linkflags="$VALUE_LINKFLAGS" 
    optimization=speed 
    --reconfigure boost.locale.iconv=off boost.locale.icu=on 
    --prefix=${BOOST_PREFIX} 
    --stagedir=${BOOST_PREFIX} 
    -sICU_PATH=${ICU_DIR};
 

Кроме того, все ICU должны! сборка с тем же компилятором.