2016-05-25 7 views
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のを経由して、私の目標から実際に完全にリンクされたパスを取得するための方法はありますか?A:でも一致しない名前を持つシンボリックリンク

これには別の方法がありますか?私は 'BundleUtilities'プラグインを見ましたが、指示がはっきりしていないので、この状況に適用できるかどうかはわかりません。

答えて

1

ICUのシンボリックリンクと実際のライブラリファイルを直接検索してインストールしました。あまりエレガントではありませんが、私の目的のために働いた。残念ながら、これはICUのバージョンを変更するたびに変更する必要があります。

set(ICU_MAJOR_VER "57") 
set(ICU_FULL_VERSION "${ICU_MAJOR_VER}.1") 


find_library(ICUIL18N_LIB libicui18n.so.${ICU_FULL_VERSION} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 
find_library(ICUUC_LIB libicuuc.so.${ICU_FULL_VERSION} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 
find_library(ICUDATA_LIB libicudata.so.${ICU_FULL_VERSION} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 

find_library(ICUIL18N_MAJOR_LIB libicui18n.so.${ICU_MAJOR_VER} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 
find_library(ICUUC_MAJOR_LIB libicuuc.so.${ICU_MAJOR_VER} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 
find_library(ICUDATA_MAJOR_LIB libicudata.so.${ICU_MAJOR_VER} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/ NO_DEFAULT_PATH) 

install(FILES ${ICUIL18N_LIB} ${ICUUC_LIB} ${ICUDATA_LIB} 
       ${ICUIL18N_MAJOR_LIB} ${ICUUC_MAJOR_LIB} ${ICUDATA_MAJOR_LIB} 
     DESTINATION lib) 
関連する問題