补充说明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)
看起来是不是很眼熟!有了这个我们就不用重复配置这些组件。