我的之前的一篇博客配置方案总是会出现下面3个问题。
1. 就是在创建wxWidgets工程的时候总是会提示如下错误:
2. 而且在没有3.2.x版本选项
3. 跳过第1和第2个问题后通过在Project property中修改如下选项后也能正常编译成功
但是还是要追求完美,毕竟以后会让它陪我很久很久。所以我查了大量官方文档和blog(好像当前没有任何一个能提供这几个问题的解决方案)。纪录一下,也帮助一下后来人。
我的配置步骤如下:
1. 首先编译器,我的编译器在下面的路径:编译器可以单独在官网下载(下载含有编译器的codeblocks,安装后codeblocks路径下也有MinGW,我猜配置到这个编译器下也是没有问题的,但是我没有做这样的尝试),mingw64的安装方法可以自行找教程。
2. 设置mingw64环境变量
3. 下载wxWidgets, 建议下载自编译版本,并解压到D:\Codeblocks\wxWidgets-3.2.6
4. 编译wxWidgets, 以下命令需要gcc的版本大于等于12.1.0, 通过运行gcc --version可以查看gcc版本
a) cd D:\Codeblocks\wxWidgets-3.2.6\build\msw
b) 分别运行以下命令。(其中-j 8是让编译采用8个线程,可以极大提升编译速度)
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean
mingw32-make -f makefile.gcc -j 8 USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1 clean
mingw32-make -f makefile.gcc -j 8 SHARED=1 MONOLITHIC=1 BUILD=debug
4. 下载并安装codeblocks, 建议遵循默认安装路径。
5. 打开codeblock,在settings->Global variables中创建如下设置
6. 在Global compiler settings中做如下设置
7. 设置debuger.
8.
编译好之后使用CodeBlock创建工程时,没有3.2.x选项,需要修改CodeBlocks安装目录下的share\CodeBlocks\templates\wizard\wxwidgets\wizard.script文件,修改前先做好备份。
用notepad++打开文件,
对文件61行修改,增加/ 3.2.x
local intro_msg = _T("Welcome to the new wxWidgets 2.6.x / 2.8.x / 3.0.x / 3.1.x / 3.2.x\nproject wizard!\n\n" +
对文件74行修改,增加(注意前面的;):;wxWidgets 3.2.x
_T("wxWidgets 2.6.x;wxWidgets 2.8.x;wxWidgets 3.0.x;wxWidgets 3.1.x;wxWidgets 3.2.x"),
对文件96行,增加/ 3.2.x
local intro_msg = _T("Welcome to the new wxWidgets 2.6.x / 2.8.x / 3.0.x / 3.1.x / 3.2.x\nTarget wizard!\n\n" +
对文件108行修改,增加(注意前面的;):;wxWidgets 3.2.x
_T("wxWidgets 2.6.x;wxWidgets 2.8.x;wxWidgets 3.0.x;wxWidgets 3.1.x;wxWidgets 3.2.x"),
查找WxVersion,在下述语句(大概358行)后面增加红色部分
if (WxVersion == 0)
lib_wxver = _T("26");
else if (WxVersion == 1)
lib_wxver = _T("28");
else if (WxVersion == 2)
lib_wxver = _T("30");
else if (WxVersion == 3)
lib_wxver = _T("31");
else if (WxVersion == 4)
lib_wxver = _T("32");
在下述语句(大概511行)后面增加红色部分
if (WxVersion == 0)
LibWxVer = _T("2.6");
else if (WxVersion == 1)
LibWxVer = _T("2.8");
else if (WxVersion == 2)
LibWxVer = _T("3.0");
else if (WxVersion == 3)
LibWxVer = _T("3.1");
else if (WxVersion == 4)
LibWxVer = _T("3.2");
修改下述语句(大概755行),把WxVersion == 3改成WxVersion >= 3
if (WxVersion >= 3 && GetCompilerFactory().CompilerInheritsFrom(Wizard.GetCompilerID(), _T("gcc*")))
然后完美解决所有最新版本错误,由于年龄大了,一边研究一边解决问题,纪录的点可能会有遗漏哈哈,以后发现再说。