如何将ICU库添加到项目中?

时间:2016-07-02 17:41:12

标签: cmake icu

请帮帮我。我想将ICU库添加到我的项目中。我的cmake版本是2.8.12.2。

有CMakeLists.txt

  

cmake_minimum_required(VERSION 2.8)

     

项目(TEST1)

     

设置(CMAKE_MODULE_PATH $ {PROJECT_SOURCE_DIR})
设置(CMAKE_CXX_COMPILER   / usr / bin / g ++)
set(CMAKE_CXX_FLAGS" $ {CMAKE_CXX_FLAGS}   -D_GLIBCXX_USE_CXX11_ABI = 0 -std = c ++ 11 -Wall")

     

find_package(Boost 1.54.0 COMPONENTS文件系统系统正则表达式   unit_test_framework REQUIRED)
find_package(ICU 52.0 REQUIRED)

     

include_directories($ {Boost_INCLUDE_DIR})   
link_directories($ {Boost_LIBRARY_DIR})

     

add_executable(test1 src / dictionary.cpp         SRC / main.cpp中         )
target_link_libraries(test1 $ {Boost_LIBRARIES} pthread         )

我已经安装了ICU库:libicu-dev,libicu-dev:i386,libicu52,libicu52:i386,libicu52-dbg:i386

但是一旦我运行CMake,我收到以下错误消息:

CMake Error at CMakeLists.txt:10 (find_package):
  By not providing "FindICU.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "ICU", but
  CMake did not find one.

  Could not find a package configuration file provided by "ICU" (requested
  version 52.1) with any of the following names:

    ICUConfig.cmake
    icu-config.cmake

  Add the installation prefix of "ICU" to CMAKE_PREFIX_PATH or set "ICU_DIR"
  to a directory containing one of the above files.  If "ICU" provides a
  separate development package or SDK, be sure it has been installed.

我该怎么办?请帮帮我。

4 个答案:

答案 0 :(得分:2)

通过在http://github.com/julp/FindICU.cmake项目目录顶部添加文件FindICU.cmake解决了这个问题

答案 1 :(得分:0)

关于包含标题和链接库的全部内容。对于小型项目,您可能只是这样做(假设您已经正确安装了ICU,并且可以手动运行)

include_directories(${ICU_INCLUDE_DIRS})
link_directories(${ICU_LIBRARY_DIRS})
add_executable(test1 src/dictionary.cpp src/main.cpp ) 
target_link_libraries(test1 ${ICU_LIBRARIES})

您可以在运行时使用以下信息打印信息" cmake"检查cmake是否找到了正确的路径。

MESSAGE("ICU_INCLUDE_DIRS: " ${ICU_INCLUDE_DIRS})

我使用的cmake版本是3.5.2

答案 2 :(得分:0)

使用CMake 3.13。

add_executable(myapp
    main.cpp
)

# ICU Components Reference:
# https://cmake.org/cmake/help/latest/module/FindICU.html
# ICU components = data, i18n, io, le, lx, test, tu and uc.

find_package(ICU 61.0 COMPONENTS uc i18n REQUIRED)

# Link using the imported target names (ICU::uc, ICU::i18n, etc.)

target_link_libraries(myapp ICU::uc ICU::i18n)

注意:除非我在find_package语句中明确列出了组件,否则这将无法工作。

答案 3 :(得分:0)

如果需要需要ICU库,请使用:

find_package(ICU REQUIRED components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})

如果可选,请使用:

find_package(ICU COMPONENTS components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})

components ... 是其中here可以找到的ICU库组件的列表。
插入这些行之后 add_executable 命令!