FindICU

3.7 版本中新增。

查找国际组件Unicode(ICU)库和程序。

版本 3.11 中新增: 支持Windows上的静态库。

组件

此模块支持以下组件

data

查找ICU Data库。在Windows上,此库组件的名称为dt,否则可以使用任何这些组件名称,并且会自动选择相应的平台特定库名。

i18n

查找ICU Internationalization库。在Windows上,此库组件的名称为in,否则可以使用任何这些组件名称,并且会自动选择相应的平台特定库名。

io

查找ICU Stream和I/O(Unicode stdio)库。

le

查找已弃用的ICU Layout Engine库,该库已在ICU版本58中移除。

lx

查找ICU Layout Extensions Engine库,用于段落布局。

测试

查找ICU测试套件。

tu

查找ICU Tool Utility库。

uc

查找基础ICU Common和Data库。所有其他ICU库都需要此库,并且建议在处理ICU组件时包含它。

此模块要成功找到ICU,至少应指定一个组件

find_package(ICU COMPONENTS <components>...)

导入的目标

此模块提供以下 导入目标

ICU::<component>

封装指定ICU组件使用需求的Target,仅在找到该组件时可用。<component>应写为小写,如上所示。例如,国际化库使用ICU::i18n

结果变量

此模块定义了以下变量

ICU_FOUND

布尔值,指示是否找到主程序和库。

ICU_INCLUDE_DIRS

包含ICU头文件的目录。

ICU_LIBRARIES

要链接的组件库。

ICU_VERSION

找到的ICU发行版的版本。

ICU程序在以下变量中定义

ICU_GENCNVAL_EXECUTABLE

gencnval可执行文件的路径。

ICU_ICUINFO_EXECUTABLE

icuinfo可执行文件的路径。

ICU_GENBRK_EXECUTABLE

genbrk可执行文件的路径。

ICU_ICU-CONFIG_EXECUTABLE

icu-config可执行文件的路径。

ICU_GENRB_EXECUTABLE

genrb可执行文件的路径。

ICU_GENDICT_EXECUTABLE

gendict可执行文件的路径。

ICU_DERB_EXECUTABLE

derb可执行文件的路径。

ICU_PKGDATA_EXECUTABLE

pkgdata可执行文件的路径。

ICU_UCONV_EXECUTABLE

uconv可执行文件的路径。

ICU_GENCFU_EXECUTABLE

gencfu可执行文件的路径。

ICU_MAKECONV_EXECUTABLE

makeconv可执行文件的路径。

ICU_GENNORM2_EXECUTABLE

gennorm2可执行文件的路径。

ICU_GENCCODE_EXECUTABLE

genccode可执行文件的路径。

ICU_GENSPREP_EXECUTABLE

gensprep可执行文件的路径。

ICU_ICUPKG_EXECUTABLE

icupkg可执行文件的路径。

ICU_GENCMN_EXECUTABLE

gencmn可执行文件的路径。

ICU组件库在以下变量中定义

ICU_<COMPONENT>_FOUND

布尔值,指示是否找到ICU组件;<COMPONENT>应写为大写。

ICU_<COMPONENT>_LIBRARIES

组件的库;<COMPONENT>应写为大写。

ICU数据文件在以下变量中定义

ICU_MAKEFILE_INC

Makefile.inc文件的路径。

ICU_PKGDATA_INC

pkgdata.inc文件的路径。

缓存变量

以下缓存变量也可以设置

ICU_<PROGRAM>_EXECUTABLE

可执行文件<PROGRAM>的路径;<PROGRAM>应写为大写。这些变量对应于上面列出的ICU程序结果变量。

ICU_INCLUDE_DIR

包含ICU头文件的目录。

ICU_<COMPONENT>_LIBRARY

ICU组件的库。<COMPONENT>应写为大写。

提示

此模块从以下位置读取搜索结果的提示

ICU_ROOT

ICU安装的根目录。也可以使用环境变量ICU_ROOTICU_ROOT变量具有优先权。

注意

在大多数情况下,不需要设置以上任何变量,除非有多个ICU版本可用且需要特定版本。

示例

查找ICU组件并将其链接到项目Target

find_package(ICU COMPONENTS i18n io uc)
target_link_libraries(project_target PRIVATE ICU::i18n ICU::io ICU::uc)