Я пытаюсь создать приложение linux, которое использует ICU. Хотя библиотека ICU, как правило, доступна для большинства дистрибутивов Linux, я недавно узнал, что это обычно not binary compatible между версиями. Я думаю, что самый простой путь вперед - развернуть ICU с моим приложением, чтобы все зависимости удовлетворялись при установке.Как развернуть библиотеки ICU с помощью CMake?
Мой вопрос: как я могу это сделать с помощью CMake? Я попытался следующие:
find_library(ICUIL18N_LIB icui18n)
find_library(ICUUC_LIB icuuc)
find_library(ICUDATA_LIB icudata)
#link pthread and ICU against the library
target_link_libraries(MyApp pthread rt ${ICUIL18N_LIB} ${ICUUC_LIB})
install(FILES ${ICUIL18N_LIB} ${ICUUC_LIB} ${ICUDATA_LIB}
DESTINATION lib)
Это, кажется, работает, однако, когда я анализирую свой сгенерированный пакет, я в конечном итоге мое приложение ожидает эти библиотеки:
libicui18n.so.50 => /lib/libicui18n.so.50 (0xf74ee000)
libicuuc.so.50 => /lib/libicuuc.so.50 (0xf737b000)
Но файлы, входящие в мои пакеты просто символьные ссылки с именами, которые даже не совпадают:
/lib/libicui18n.so -> libicui18n.so.50.1.2
/lib/libicuuc.so -> libicuuc.so.50.1.2
/lib/libicudata.so -> libicudata.so.50.1.2
есть ли способ для меня, чтобы получить фактические полностью связанные пути от моей цели с помощью CMake, так что я могу установить нужные файлы?
Есть ли другой механизм, который я должен использовать для этого? Я видел плагин «BundleUtilities», но инструкции не ясны, и я не уверен, что он применим к этой ситуации.