wxWidgets在CodeBlocks中的配置
1. 下载安装带mingw的Code::Blocks(这个就不详细说了,直接下载exe版的很容易搞定),使用标准安装(默认安装wxSmith插件),假设Code::Blocks装在D:/Program Files/CodeBlocks中。
2. 安装好之后启动Code::Blocks,会出现一个编译器选项对话框,选择第一个GUN GCC Compiler(后面有detected标志)就能编译C/C++项目了
3. 在系统->高级->环境变量->Path中添加:
a) D:/Program Files/CodeBlocks/MinGW/libexec/gcc/mingw32/3.4.5;
b) 和D:/Program Files/CodeBlocks/MinGW/bin;
4. 这里开始安装wxwidgets,先到网站下载完全版(或windows相应版本,叫做MSW,即Microsoft windows)
5. 解压软件到目标目录(这里假设为D:/wxWidgets-2.8.10)
6. 开始菜单->运行->cmd->回车进入命令行
7. 切换到目录D:/wxWidgets-2.8.10/build/msw
8. 执行命令mingw32-make -f makefile.gcc BUILD=debug UNICODE=1(详细的参数见D:/wxWidgets-2.8.10/INSTALL-MSW.txt),这里参数很关键,BUILD选项共两个参数debug和release。因为选项用Code::Blocks编译wxWidgets项目时必须编译成相应的目标(build target中的debug对debug),否则会提示找不到libwxmsw28ud_core/libwxmsw28u_core等。Unicode道理也一样,这里1表示使用Unicode,0表示不使用Unicode。
9. 切换到目录D:/wxWidgets-2.8.10/samples/minimal
10. 执行命令mingw32-make -f makefile.gcc BUILD=debug UNICODE=1
11. 打开Code::Blocks中compiler and debugger settings,在Linker settings->link libraries中添加D:/wxWidgets-2.8.10/lib/gcc_dll/目录下所有*.a文件。
12. 在Search directories里的Compiler里面添加上D:/wxWidgets-2.8.10/lib/gcc_dll/mswu/wx。
13. 新建一个wxWidgets project,按提示填写相应的保存目录和版权信息,其中
a) preferred GUI builder中可以选择wxSmith;
b) wxWidgets location,在base里面选择D:/wxWidgets-2.8.10就可以了;
c) wxWidgets Library Setting里面的设置必须和wxWidgets编译选项相一致(本例中采用的是enable Unicode,另外两项不选)。
常见问题解决:
1. 找不到wx/setup.h,libwxmsw*,*.h等文件
a) 查看build target是否与wxWidgets编译选项相一致,debug对debug,release对release。
b) 在Linker settings->link libraries中添加D:/wxWidgets-2.8.10/lib/gcc_dll/目录下所有*.a文件。
c) 在Search directories->compiler里添加D:/wxWidgets-2.8.10/lib/gcc_dll/mswu/wx。
d) wxWidgets编译有问题或路径设置有问题(路径中最好不要包含汉字)。
2. 脚本异常,/CodeBlocks/share/CodeBlocks/templates/wizard/wxwidgets/ wizard.script中的XX行执行错误
a) 肯定是设置地有问题,首先检查有没有使用汉语路径,如果使用了,改一下,然后进行b;
b) 将Code::Blocks的设置信息删除(位置在系统盘中的/Documents and Settings/你的用户名/Application Data,删除其中的codeblocks文件夹,然后进行c;
c) 重新进行正文中11-13步的设置;
d) 如果问题没有解决,删除wxWidgets所在目录的所有东西(可能需要重新启动explorer.exe),取消使用汉字目录,删除Code::blocks的设置信息,从编译wxWidgets(正文第5步)重新编译wxWidgets和设置环境。