1# Minimum CMake required 2cmake_minimum_required(VERSION 3.1.3) 3 4# Project 5project(libandroidicu C CXX) 6 7add_definitions("-DANDROID_LINK_SHARED_ICU4C") 8 9# Add other source dirs that icuuc uses 10set(ICU_CONFIG_LOCAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../android_icu4c/include") 11 12# Compile icuuc 13set(ICUUC_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../icu4c/source/common") 14 15# Compile icui18n 16set(ICU_I18N_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../icu4c/source/i18n") 17set(ICU_I18N_TARGET_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libicui18n-target") 18add_subdirectory(${ICU_I18N_SOURCE_DIR} ${ICU_I18N_TARGET_BINARY_DIR}) 19 20# Glob shim sources 21set(ICU_SHIM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") 22file( 23 GLOB_RECURSE 24 ICU_STATIC_SHIM_CC_SOURCES 25 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} 26 "${ICU_SHIM_SOURCE_DIR}/*.cpp" 27 "${ICU_SHIM_SOURCE_DIR}/*.h" 28) 29message(STATUS "ICU_STATIC_SHIM_CC_SOURCES=${ICU_STATIC_SHIM_CC_SOURCES}") 30 31add_library( 32 # name 33 libandroidicu 34 35 # SHARED or STATIC 36 STATIC 37 38 # Provides a relative path to your source file(s). 39 ${ICU_STATIC_SHIM_CC_SOURCES} 40) 41target_include_directories(libandroidicu PRIVATE ${ICUUC_SOURCE_DIR}) 42target_include_directories(libandroidicu PRIVATE ${ICU_CONFIG_LOCAL_SOURCE_DIR}) 43target_include_directories(libandroidicu PRIVATE ${ICU_I18N_SOURCE_DIR}) 44target_include_directories(libandroidicu PRIVATE ${ICU_STATIC_SHIM_CC_SOURCES}) 45target_link_libraries(libandroidicu icui18n) 46 47set_target_properties(libandroidicu PROPERTIES LINKER_LANGUAGE CXX) 48 49