前馈科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 793|回复: 0

Windows下用codeblocks编译codeblocks

[复制链接]

97

主题

97

帖子

539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
539
发表于 2020-11-19 17:21:54 | 显示全部楼层 |阅读模式
codeblocks是个强大的开源IDE,若我们仅仅限于使用它,那就有点暴殄天物了,作为一个资深折腾爱好者,由codeblocks源码建立codeblocks那是必须尝试的,本次在Windows 7 下使用codeblocks17.12编译codeblocks 17.12源代码,希望对广大折腾爱好者有所帮助!
1、首先下载源代码包:
codeblocks源码:codeblocks_17.12.tar.xz
widgets源码:wxMSW-2.8.12.7z
2、下载codeblocks17.12带编译器版本并安装
codeblocks-17.12mingw-setup.exe
本次安装在C盘
3、添加mingw32的环境变量
将C:\Program Files\CodeBlocks\MinGW\bin和C:\Program Files\CodeBlocks\MinGW\mingw32\bin添加系统PATH变量中;
4、编译wxMSW-2.8.12
打开cmd终端,进入wxMSW-2.8.12源代码编译目录,例如wxMSW-2.8.12源代码在<wxDir>,则进:
cd <wxDir>\build\msw
编译wxMSW-2.8.12有两种模式:degbug模式和release模式,考虑到想修改codeblocks代码并调试,所以我选择了debug模式,编译步骤如下:
首先将前一次编译结果clean:  mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1 clean
然后开始编译:  mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1
在这之前有个小插曲,当时按wxMSW-2.8.12源代码文件夹中的的说明<wxDir>\docs\msw\install.txt中的给出的编译指令:
mingw32-make -f makefile.gcc BUILD=debug UNICODE=1   进行编译,wxMSW-2.8.12编译通过,但最终编译codeblocks后运行codeblocks时报如下错误:
wx error.png

按上述正确指令(mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1)编译通过后编译codeblocks时报瑞安错误:
/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28u
经分析原因如下:
debug模式下编译wxMSW-2.8.12在lib\gcc_dll下生成的wxmsw28u库文件为libwxmsw28ud.a,而codeblocks需要的是libwxmsw28ud.a,因此报找不到libwxmsw28ud.a的错误
也就说codeblocks17.12的源代码不支持和wxMSW-2.8.12联合Debug,只能使用release版的wxMSW-2.8.12。
重新编译release版的wxMSW-2.8.12
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1 clean
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean
mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1

wx.png

5、打开codeblocks源码工程
以codeblocks源代码放在F:\codeblocks为例,打开F:\codeblocks\codeblocks-17.12\src下的CodeBlocks.cbp,打开方式选择codeblocks IDE
Screenshot from 2020-11-20 10-09-49.png
6、设置全局变量
在codeblocks的Settings->Global Variables界面中设置两个全局变量:
全局变量cb_release_type的base值为F:\codeblocks\codeblocks-17.12\src
Screenshot from 2020-11-20 10-12-07.png
全局变量wx的base值为F:\CodeBlocks\wxMSW-2.8.12
Screenshot from 2020-11-20 10-12-28.png
7、设置exchndl.dll的路径
由于exchndl.dll分win32和win64版本,我们需要根据win7的版本指定exchndl.dll的版本,此次指定win32版:
在codeblocks打开的codeblocks源码工程的workspace中右键->build options->Code::Blocks wx2.8.x->Search directories->Linker->Add
然后选择F:\codeblocks\codeblocks-17.12\src\
Screenshot from 2020-11-20 10-23-57.png
8、编译
执行rebuild,等待编译完成
编译后期可能出现zip.exe权限错误,这是是由你win7权限的问题,需要将zip设置成兼容模式,管理员权限,并以管理员运行codeblocks
编译后的codeblocks目标可执行文件在F:\codeblocks\codeblocks-17.12\src\devel下,执行时若是报找不到wxmsw28u_gcc_custom.dll错误,则手动将wxmsw28u_gcc_custom.dll从wxMSW-2.8.12拷贝过来。
9、输出
在F:\codeblocks\codeblocks-17.12\src下执行update.bat将codeblocks可执行文件和所有依赖库文件输出到F:\codeblocks\codeblocks-17.12\src\output
至此编译结束

注:
若需要调试codeblocks则需在编译选项中选则输出编译信息:
Screenshot from 2020-11-20 11-12-23.png
就可以单步、断点调试codeblocks了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|计算机控制

GMT+8, 2024-4-20 16:44 , Processed in 0.054081 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表