0
我正在嘗試構建一個使用ICU的Linux應用程序。儘管ICU庫通常在大多數Linux發行版上可用,但我最近了解到它通常在版本之間爲not binary compatible。我認爲最簡單的方法是將ICU與我的應用程序一起部署,以便在安裝時滿足所有依賴關係。如何使用CMake部署ICU庫?
我的問題是我該如何用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'插件,但說明並不明確,我不確定它適用於這種情況。