FindwxWidgets

查找 wxWidgets 安装并提供项目使用的必要要求。

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

wxWidgets(以前称为 wxWindows)是一个用于创建跨平台应用程序图形用户界面 (GUI) 的小部件工具包和工具库。

在版本 3.4 中添加: find_package() 版本参数的支持。

在版本 3.14 中添加: OPTIONAL_COMPONENTS 支持。

组件

wxWidgets 是一个模块化库。此模块支持组件以指定要使用的模块。组件可以通过 find_package() 命令指定。

find_package(
  wxWidgets
  [COMPONENTS <components>...]
  [OPTIONAL_COMPONENTS <components>...]
)

支持的组件包括

base

查找提供任何 wxWidgets 代码都依赖的强制性类的库。此组件对于实现 wxWidgets 的应用程序始终是必需的。

core

查找提供基本 GUI 类(如 GDI 类或控件)的库。

gl

查找 OpenGL 支持。

mono

查找 wxWidgets 单体库。

aui

查找高级用户界面停靠库。

net

查找提供网络访问的库。

webview

3.4 版本新增。

查找提供 Web 文档(HTML/CSS/JavaScript)渲染的库。

有关支持的 wxWidgets 组件的完整列表,请参阅上游文档。

如果未指定任何组件,此模块默认会搜索 corebase 组件。

导入的目标

此模块提供以下 导入目标

wxWidgets::wxWidgets

在 3.27 版本中新增。

一个接口导入目标,封装了找到的组件的 wxWidgets 使用要求,如果找到 wxWidgets 则可用。

结果变量

此模块定义了以下变量

wxWidgets_FOUND

布尔值,指示是否找到了(请求版本)的 wxWidgets 及其所有请求的组件。

wxWidgets_VERSION

版本 4.2 中添加。

找到的 wxWidgets 的版本。

wxWidgets_INCLUDE_DIRS

WIN32 的包含目录,即查找 `<wx/wx.h> 和 `<wx/setup.h> 的位置;在类 Unix 系统上可能为空。

wxWidgets_LIBRARIES

wxWidgets 库的路径。

wxWidgets_LIBRARY_DIRS

编译时链接目录,在类 Unix 系统上用于设置 rpath。在 WIN32 环境中通常为空字符串。

wxWidgets_DEFINITIONS

包含编译/链接 WX 所需的编译定义,例如 WXUSINGDLL

wxWidgets_DEFINITIONS_DEBUG

包含编译/链接 WX 调试版本所需的编译定义,例如 __WXDEBUG__

wxWidgets_CXX_FLAGS

类 Unix 系统的包含目录和编译器标志,在 Windows 上为空。本质上是 wx-config --cxxflags 的输出。

提示

此模块在调用 find_package(wxWidgets) 之前接受以下变量。

WX_CONFIG

3.11 版本新增。

环境变量,用于手动指定 wxWidgets 库配置提供程序可执行文件的名称,除了默认名称 `wx-config` 之外进行搜索。

WXRC_CMD

3.11 版本新增。

环境变量,用于手动指定 wxWidgets 资源文件编译器可执行文件的名称,除了默认名称 `wxrc` 之外进行搜索。

有两个搜索分支:Windows 风格和类 Unix 风格。对于 Windows,会搜索以下变量,并在有多个选择时设置为默认值。如果不希望使用默认值,请更改它们(即,这是唯一应该更改以选择配置的变量)。

wxWidgets_ROOT_DIR

wxWidgets 的基目录(例如,C:/wxWidgets-3.2.0)。

wxWidgets_LIB_DIR

wxWidgets 库的路径(例如,C:/wxWidgets-3.2.0/lib/vc_x64_lib)。

wxWidgets_CONFIGURATION

要使用的配置(例如,msw、mswd、mswu、mswunivud 等)。

wxWidgets_EXCLUDE_COMMON_LIBRARIES

设置为 TRUE 以排除链接常用必需库(例如,png、tiff、jpeg、zlib、webp、regex、expat、scintilla、lexilla 等)。

对于类 Unix 风格,此模块使用 `wx-config` 工具。通过打开/关闭以下变量,可以在 QtDialog 或 ccmake 界面中选择调试/发布、Unicode/ANSI、通用/非通用和静态/共享。

wxWidgets_USE_DEBUG

如果启用,将搜索 wxWidgets 调试版本。

wxWidgets_USE_UNICODE

如果启用,将搜索 wxWidgets Unicode 版本。

wxWidgets_USE_UNIVERSAL

如果启用,将搜索 wxWidgets 通用版本。

wxWidgets_USE_STATIC

如果启用,将链接静态 wxWidgets 库。

wxWidgets_CONFIG_OPTIONS

此变量可用于传递给 wx-config 工具的所有其他选项。例如,要在系统安装前缀 `/usr` 处使用找到的 base 工具集,请在调用(在调用 find_package() 命令之前)设置变量,如下所示。

set(wxWidgets_CONFIG_OPTIONS --toolkit=base --prefix=/usr)

已弃用变量

以下变量提供用于向后兼容性

wxWidgets_VERSION_STRING

自版本 4.2 起已弃用: 使用 wxWidgets_VERSION,它具有相同的值。

3.4 版本新增。

找到的 wxWidgets 的版本。

wxWidgets_USE_FILE

自版本 4.2 起已弃用: 与其使用此变量,不如直接包含 UsewxWidgets 模块。

include(UsewxWidgets)

指向 UsewxWidgets 模块的路径,用于在当前目录中使用 wxWidgets。例如:

find_package(wxWidgets)
if(wxWidgets_FOUND)
  include(${wxWidgets_USE_FILE})
endif()

示例

示例:查找 wxWidgets

查找 wxWidgets 并使其成为必需的(如果找不到 wxWidgets,则处理将停止并显示错误消息)

find_package(wxWidgets REQUIRED)

示例:使用导入的目标

查找 wxWidgets 并在项目中导入目标

find_package(wxWidgets)
target_link_libraries(example PRIVATE wxWidgets::wxWidgets)

示例:使用组件

查找 wxWidgets 并指定组件

find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net)
target_link_libraries(example PRIVATE wxWidgets::wxWidgets)

示例:单体 wxWidgets 构建

使用单体 wxWidgets 构建的示例用法

find_package(wxWidgets COMPONENTS mono)
target_link_libraries(example PRIVATE wxWidgets::wxWidgets)

示例:使用变量

在导入的目标可用之前的 CMake 版本 3.27 之前查找和使用 wxWidgets

# Note that for MinGW users the order of libs is important.
find_package(wxWidgets COMPONENTS gl core base OPTIONAL_COMPONENTS net)

if(wxWidgets_FOUND)
  include(UsewxWidgets)
  # and for each of the project dependent executable/library targets:
  target_link_libraries(example ${wxWidgets_LIBRARIES})
endif()