FindICU

3.7 版本中新增。

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

find_package(ICU [<version>] COMPONENTS <components>... [...])

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

组件

此模块支持组件,这些组件可以通过以下方式指定:

find_package(ICU COMPONENTS <components>...)

支持以下组件

data

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

i18n

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

io

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

le

查找已弃用的 ICU 布局引擎库,该库已从 ICU 58 版本开始移除。

lx

查找 ICU 布局扩展引擎库,用于段落布局。

测试

查找 ICU 测试套件。

tu

查找 ICU 工具实用库。

uc

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

此模块至少应指定一个组件才能成功找到 ICU。

导入的目标

此模块提供以下 导入目标

ICU::<component>

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

结果变量

此模块定义了以下变量

ICU_FOUND

布尔值,指示是否找到了 (所请求版本的) 主要 ICU 程序和库。

ICU_VERSION

找到的 ICU 发布的版本。

ICU_INCLUDE_DIRS

包含 ICU 头文件的目录。

ICU_LIBRARIES

要链接的组件库。

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)