尝试通过Codeblocks编译Codeblocks
最近工作安排上的空余时间比较多.尝试了下通过Codeblocks去编译(Self-host)Codeblocks
还传了个Gitee(code-blocks-mint),不知道后面会不会继续对其进行修改——主要最近习惯了使用qml这种脚本化的界面实现方式,看见widget跟页面标签就一阵头大;
另外,Codeblocks的代码虽然相对屎山代码来说已经非常的简洁且注释齐全了,尤其是在编译过程中出现错误,通过注释能解决大部分问题,但是,还是不妨碍CB的源码在main.cpp里放一堆主页面的功能实现,看着一阵乱;
还有就是,查看CB官方的svn提交log明显能感觉到CB的后劲儿不足——很多新功能还没有啊,易用性远远赶不上VS.
至于为啥要尝试自己编译CB,主要是当时想的通过CB去接TDMGCC,看看C++14 17等高版本特性,VS不想升——升了也未必有,主要还占地方,然后就阴差阳错的,跑去编译CB的代码了.
步骤上来说,通过源码编译CB分为以下几步(其实它官网有步骤说明的)
1.下载最新版本的CB、下载目标的SVN源码(官网查地址或者sourceforge压缩包)、下载与目标源码使用的wxWidget版本相近但是不高于的二进制包或者源码、zip工具包。
2.准备一个MingGW编译器——如果是通过MingGW官网下载,那么繁杂的项目会很多,推荐使用CB安装时自带的(只是处于偷懒的目的考虑,版本不足或者版本过高还是需要手工下载合适的)。
3.获取wxWidget的二进制文件,如果直接下载的是你对应系统平台的二进制文件则跳过这一步。以windows为例,需要将目录切换到源码的build\msw目录下使用如下指令
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 USE_OPENGL=1 VENDOR=cb CXXFLAGS="-fno-keep-inline-dllexport" clean
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 USE_OPENGL=1 VENDOR=cb CXXFLAGS="-fno-keep-inline-dllexport" >log.txt 2>&1
上面的指令中第一行是清理前次编译,首次编译用不上,直接使用第二条,得到发行版的wxWidget二进制文件
4.进入CB源码内,打开src下对应的workspace,进行编译,编译完成后运行workspace同级目录的updateXX.bat
上面的步骤走完了,在src\output_XXX目录下就会出现手工编译出来的Codeblocks文件。(相关的各种编译问题我都留到了Gitee的md上)