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_EXECUTABLEgencnval可执行文件的路径。ICU_ICUINFO_EXECUTABLEicuinfo可执行文件的路径。ICU_GENBRK_EXECUTABLEgenbrk可执行文件的路径。ICU_ICU-CONFIG_EXECUTABLEicu-config可执行文件的路径。ICU_GENRB_EXECUTABLEgenrb可执行文件的路径。ICU_GENDICT_EXECUTABLEgendict可执行文件的路径。ICU_DERB_EXECUTABLEderb可执行文件的路径。ICU_PKGDATA_EXECUTABLEpkgdata可执行文件的路径。ICU_UCONV_EXECUTABLEuconv可执行文件的路径。ICU_GENCFU_EXECUTABLEgencfu可执行文件的路径。ICU_MAKECONV_EXECUTABLEmakeconv可执行文件的路径。ICU_GENNORM2_EXECUTABLEgennorm2可执行文件的路径。ICU_GENCCODE_EXECUTABLEgenccode可执行文件的路径。ICU_GENSPREP_EXECUTABLEgensprep可执行文件的路径。ICU_ICUPKG_EXECUTABLEicupkg可执行文件的路径。ICU_GENCMN_EXECUTABLEgencmn可执行文件的路径。
ICU 组件库定义在以下变量中
ICU_<COMPONENT>_FOUND布尔值,指示是否找到了 ICU 组件;
<COMPONENT>应大写。ICU_<COMPONENT>_LIBRARIES组件库;
<COMPONENT>应大写。
ICU 数据文件定义在以下变量中
ICU_MAKEFILE_INCMakefile.inc文件的路径。ICU_PKGDATA_INCpkgdata.inc文件的路径。
缓存变量¶
以下缓存变量也可以设置
ICU_<PROGRAM>_EXECUTABLE可执行文件
<PROGRAM>的路径;<PROGRAM>应大写。这些变量对应于上面列出的 ICU 程序结果变量。ICU_INCLUDE_DIR包含 ICU 头文件的目录。
ICU_<COMPONENT>_LIBRARYICU 组件的库。
<COMPONENT>应大写。
提示¶
此模块从以下位置读取有关搜索结果的提示:
ICU_ROOTICU 安装的根目录。也可以使用环境变量
ICU_ROOT;ICU_ROOT变量具有优先权。
注意
在大多数情况下,不需要设置上述任何变量,除非有多个 ICU 版本可用且需要特定版本。
示例¶
查找 ICU 组件并将其链接到项目 Target
find_package(ICU COMPONENTS i18n io uc)
target_link_libraries(project_target PRIVATE ICU::i18n ICU::io ICU::uc)