如何将ICU库添加到项目中?
How to add ICU library to project?
请帮帮我。我想将 ICU 库添加到我的项目中。我的cmake版本是2.8.12.2.
有CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test1)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
set(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 filesystem system regex
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.
我该怎么办?请帮助我。
的项目目录顶部添加文件 FindICU.cmake 解决了这个问题
一切都是关于包含 headers 和链接库。对于小型项目,您可能可以这样做,(假设您已经正确安装了 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
使用 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 语句中特别列出组件,否则这不会起作用。
如果需要ICU 库,请使用:
find_package(ICU REQUIRED components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})
如果可选,使用:
find_package(ICU COMPONENTS components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})
其中 components... 是可以找到的 ICU 库组件列表 here。
插入这些行仅在add_executable命令之后!
请帮帮我。我想将 ICU 库添加到我的项目中。我的cmake版本是2.8.12.2.
有CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test1)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
set(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 filesystem system regex 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.
我该怎么办?请帮助我。
一切都是关于包含 headers 和链接库。对于小型项目,您可能可以这样做,(假设您已经正确安装了 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
使用 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 语句中特别列出组件,否则这不会起作用。
如果需要ICU 库,请使用:
find_package(ICU REQUIRED components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})
如果可选,使用:
find_package(ICU COMPONENTS components...)
target_link_libraries(lab1 ${ICU_LIBRARIES})
其中 components... 是可以找到的 ICU 库组件列表 here。
插入这些行仅在add_executable命令之后!