补充说明wxWidgets在Windows下使用CMake的配置

wxWidgets官方提供了一个在Windows下使用CMake来构建wxWidgets库的方法,这样便于你自己用CMake构建项目。可参考源码包含的文档,这在下列这样的路径里:

..\wxWidgets-3.x.x\docs\doxygen\overviews\cmake.md

..\wxWidgets-3.x.x\samples\minimal\CMakeLists.txt

构建并生成CMake配置

打开下载的wxWidgets-3.x.x这样的一个文件夹,里面会有个CMakeLists.txt文件,在此路径进入cmd

输入命令(需要先配置好环境变量,我们指定安装路径,编译为静态库,创建out作为构建目录)

cmake -DCMAKE_INSTALL_PREFIX=%WXWIN% -DwxBUILD_SHARED=OFF -B build/cmake/out

然后回车,我们就能构建好默认的64位程序架构配置(系统相关),然后输入编译生成命令(你也可以从sln在Microsoft Visual Studio 2010或更高版本的集成开发环境(IDE)来构建使用wxWidgets的项目,这样其实更推荐在build\msw目录下直接集成编译。如果你先前编译过wxWidgets库,记得备份lib这个文件夹)

cmake --build ./build/cmake/out --target install

这会默认编译好Debug版本,建议先用例程测试验证Debug版本,然后输入

cmake --build ./build/cmake/out --target install --config Release

编译安装Release版

现在构建32位的wxWidgets库,输入以下命令

cmake -A Win32 -DCMAKE_INSTALL_PREFIX=%WXWIN% -DwxBUILD_SHARED=OFF -B build/cmake/out

然后一样的编译生成步骤

请不要忘了生成的CMake配置文件,它们存在于安装目录的lib\cmake、lib\vc_lib和lib\vc_x64_lib都有的mswu和mswud文件夹里,我们可以把这些配置迁移到相同编译工具链生成的wxWidgets库中(如MSVC)

现在说明最小验证程序,找到官方提供的最小示例程序,在这样的路径

..\wxWidgets-3.x.x\samples\minimal

还是使用cmd编译

cmake -B build -DCMAKE_PREFIX_PATH=%WXWIN%/lib/cmake/wxWidgets
(提示,你可以自定以设置添加环境变量如WXWINCMAKE其值填写为%WXWIN%/lib/cmake/wxWidgets,这样你就可以更简洁设置变量-DCMAKE_PREFIX_PATH=%WXWINCMAKE%)
cmake --build ./build

这样会在此build\Debug下生成一个minimal.exe可执行程序,运行效果如图

总结

使用此构建方法可以直接生成一些繁琐的CMake配置,简化了CMake构建项目的工作。

可以参考minimal的CMakeLists.txt文件,find_package命令使用如下

find_package(wxWidgets 3.2 COMPONENTS core base REQUIRED CONFIG)

如果是直接集成编译的库,CMake是不能成功构建minimal的,因为CONFIG指示CMake只查找Config模式的配置文件。没有安装上述方式的配置,只能使用

find_package(wxWidgets 3.2.4 REQUIRED COMPONENTS core base adv html xml net aui stc xrc gl media qa richtext propgrid ribbon webview)

这看起来就复杂不少,因为缺乏预先的配置,所以如果你使用CMake构建项目,我建议你使用上述方式的配置。

提示:你可以查看lib\cmake\wxWidgets\wxWidgetsConfig.cmake文件,中间有这样一个命令

foreach(libname wxbase;wxnet;wxcore;wxadv;wxaui;wxhtml;wxpropgrid;wxribbon;wxrichtext;wxwebview;wxstc;wxxrc;wxmedia;wxgl;wxqa;wxxml)

看起来是不是很眼熟!有了这个我们就不用重复配置这些组件。

使用wxWidgets进行跨平台GUI开发(附1)的更多相关文章

  1. 《使用wxWidgets进行跨平台程序开发》chap09——布局一个对话框

    ///////////////////////////////////////////////////////////////////////////// // Name: personalrecor ...

  2. 《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序

    // Name: minimal.cpp // Purpose: Minimal wxWidgets sample // Author: Julian Smart #include "wx/ ...

  3. 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

    原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓. 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样 ...

  4. Atitit 桌面软件跨平台gui解决方案 javafx webview

    Atitit 桌面软件跨平台gui解决方案 javafx webview 1.1. 双向js交互1 1.2. 新弹出窗口解决1 1.3. 3.文档对象入口dom解析1 1.4. 所以果断JavaFX, ...

  5. 【转贴】-- 基于QT的跨平台应用开发

    原帖地址:http://www.cnblogs.com/R0b1n/p/4106613.html 1 Qt简介 Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架.它提供给应用程 ...

  6. atitit.跨平台gui 概览

    atitit.跨平台gui 概览 为什么需要跨平台gui 国际上那些跨平台的GUI程序,除了像Firefox之类的大型项目会重写界面外,中小型的项目基本上都是用GTK+或WxWidgets为多.毕竟要 ...

  7. wxWidgets 在 Linux 下开发环境配置

    本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...

  8. wxWidgets 在 Windows 下开发环境配置

    本文基于 CodeBlocks (16.01) 和 wxWidgets (3.0.2) 搭建 Windows 环境下 GUI 开发环境. 1.  CodeBlocks 官网,下载最新版安装包 code ...

  9. 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore

    大家好 , 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 , 名字叫 HtmlCore  . 项目的一个主要目标是可以用 .Net 在 移动设备 上 开发 GUI 程序 (界面程 ...

  10. 基于Qt5 跨平台应用开发

    1.Qt简介 2.Qt 编程关键技术 2.1 信号与槽 2.2 Qt事件处理 3.Qt开发与实例分析 3.1 开发环境 3.2 系统实现基本框架 3.3 数据库管理 3.5 对Excel进行操作 4. ...

随机推荐

  1. go实现协程池管理

    使用channel实现协程池 通过 Channel 实现 Goroutine Pool,缺点是会造成协程的频繁开辟和注销,但好在简单灵活通用. package main import ( " ...

  2. Golang 入门 : 字符串及底层字符类型

    字符串 基本使用 在 Go 语言中,字符串是一种基本类型,默认是通过 UTF-8 编码的字符序列,当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节,比如中文编码通常需 ...

  3. vim中文乱码 vim字符集设置

    vim中文乱码 vim字符集设置 vim的设置一般放在/etc/vimrc文件中,不过,建议不要修改它.可以修改~/.vimrc文件(默认不存在,可以自己新建一个),写入所希望的设置. set fil ...

  4. LLM应用落地实施手册

    背景 自ChatGPT诞生以来,各个企业都开始尝试引入LLM落地实施"智能"应用,而目前并没有太多文章系统地介绍应该怎么落地实施一个基于LLM的应用,到底应该做哪些步骤.本人从20 ...

  5. Apollo批量给新创建的用户授可编辑权限

    背景: 我们要在Apollo中批量给新创建的用户授可编辑权限 apollo系统版本: java-2.1.0 管理员账号:Apollo 可编辑账号:guoyabin 过程: 在没写这段代码的时候从网上搜 ...

  6. 【JDBC第1章】JDBC概述

    第1章:JDBC概述 1.1 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以 ...

  7. 【Docker】安装

    Docker安装 前提说明 CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条 ...

  8. Windows Terminal 调整默认终端

    Windows Terminal 打开时默认的是 PowerShell, 如下图: 但是, 我希望默认的是更轻快的 cmd... 打开设置 调整 defaultProfile 为 cmd.exe 配置 ...

  9. AIR724UG上电后引脚的默认电平

    使用AIR724UG的引脚作为继电器的控制引脚时,由于上电时引脚的电平有的高,有的低. 在某些场合我们希望GPIO上电默认是低电平,所以我将常用引脚中可用的引脚标注了出来.

  10. Python科学计算系列12—积分变换

    1.拉普拉斯变换及逆变换 拉普拉斯变换公式 拉普拉斯逆变换公式 例子: 代码如下: from sympy import * from sympy.integrals import laplace_tr ...