在Code::Blocks试用与安装vim插件

博主一直都是在Linux下做开发,平时用的编辑器都是VIM。可vim这的痛点是插对C++的补全做不够好。我想要的是当我输入string::时就能提示string下的方法。

无意间博主看到了Code::Blocks,于是安装上来玩玩。结果一玩就根本停不下来。

如下为Code::Blocks的主界面:

在Code::Blocks试用与安装vim插件

它各种鲜明的高亮一下子就征服了博主。主要是对C++的支持相当好。最令博主喜爱的是它的自动调整代码格式的功能,一点就能将整个工程的代码按照指定的格式进行调整。

但是,博主还是有点不习惯。没有vim风格的编辑方式。必竟博主早已习惯了vim的各种快捷方式,能在不摸鼠标的前提下完成所有的开发工作。于是,博主想安装一个vim的插件。


博主在网上查了一下,Code::Blocks还是有支持vim的插件:http://www.oschina.net/question/1167622_155589

对应的源码在 github里:https://github.com/zmj64351508/cbvike

博主将 cbvike 用 git clone 到本地。打开看,里面有vike-unix.cbp文件,原来是Code::Blocks的工程。

按作者的说明,在编该工程时,必须要指定 wxWidget, codeblocks 的源码路径,至少是头文件的路径。

在Code::Blocks试用与安装vim插件

那就是说要找到 wxWidgets 与 Code::Blocks 的源码啰。

之于Code::Blocks的头文件,只需要安装 Code::Blocks 的开发包就行。

1
sudo dnf install codeblocks-devel -y

安装好了之后,在 /usr/include/ 路径下便会有 codeblocks 子目录。

那么 wxWidgets 呢?我用 dnf 没有找到相对应的安装源。于是到wxWidget的官网去下载。官网里有很多版本,这个不是随便下载的,必须要找到一个与Code::Blocks版本相匹配的才行。怎么看呢?打开 Code::Blocks 的 help --> About .. ,可以在弹出的对话框中看到:

在Code::Blocks试用与安装vim插件

得知wxWidgets的版本是 2.8.12,于是下载该版本的源码:https://github.com/wxWidgets/wxWidgets/releases/download/v2.8.12/wxWidgets-2.8.12.zip

解压出来,进入该源码目录,执行 ./configure,报错:

在Code::Blocks试用与安装vim插件

结果报依赖 gtk 2.0,这个安装即可:


sudo dnf install gtk2-devel -y

现在 Code::Blocks 与 wxWidgets 的源码都准备好了。

我们在执行 cbvike 工程 build 时报编译错误:

在Code::Blocks试用与安装vim插件

为什么有3个 "(invalid)" ?这是怎么来的?打开 cbvike 的工程文件 vike-unix.cbp 文件看个究竟:

在Code::Blocks试用与安装vim插件

这里有3个参数没有指定,没设定便是"(invalid)",所以编译报错了。那在哪里去指定呢?

Settings --> Global variables...

在Code::Blocks试用与安装vim插件

在 vike-unix.cbp 中都是大写的,而在这里则对应小字的名称,如:CB_DLL_PATH --> cb_dll_path。

将 wx 指定为 wxWidgets 源码路径;cb_path 为 /usr/include/codeblocks;cb_release_type 填空格。

编译~

报错:sdk.h 找不到

在Code::Blocks试用与安装vim插件

感觉这个 /usr/include/codeblocks/src/sdk/wxcintilla/include 路径不对。没有这个路径,只有:/usr/include/codeblocks/wxcintilla/include。于是修改 vike-unix.cbp 文件:

在Code::Blocks试用与安装vim插件

但还是没有解决上述错误。我们去 wxWidgets 与 codeblocks 中去找,看 sdk.h 文件在哪里。

结果在 codeblocks 源码目录中找到。那这里,可以还要改改:

在Code::Blocks试用与安装vim插件

再编译~

这次是报 wx/wxprec.h 头文件找不到,这个文件在 wxWidgets 源码中找到:./include/wx/wxprec.h

那得在 vike-unix.cbp 文件中加一个 wxWidgets 的路径:

在Code::Blocks试用与安装vim插件

再编译~

在Code::Blocks试用与安装vim插件

查源码:

在Code::Blocks试用与安装vim插件

这是定义了 wxUSE_XML 又没有定义 wxUSE_WCHAR_T 导致的错误。

在wxWidgets源码中找 "wxUSE_WCHAR_T" 结果在 configure 中找到:

在Code::Blocks试用与安装vim插件 

那这个是由 wxUSE_WCHAR_T 由 ac_cv_sizeof_wchar_t 决定,由这个值有输出到 config.log 文件中,如下L22221:

在Code::Blocks试用与安装vim插件

在 config.log 中查得 ac_cv_sizeof_wchar_t 为 4 :

在Code::Blocks试用与安装vim插件

而且在 confdefs.h 中已经定义了 "SIZEOF_WCHAR_T"(见L22222~22225)。

查 confdefs.h ,结果没有找到这个文件。

......... 

最终查找,configure生成的配置文件是 ./lib/wx/include/gtk2-ansi-release-2.8/wx/setup.h

博主在 wxWidgets 中也 make 了一下,过不了,也是跟上面一样的问题。看来,如果解决了 wxWidgets 的编译问题之后,cbvike 的编译问题也应该迎刃而解了。

........

不折腾这个wxWidgets的编译问题了。我们已在软件源中找到 wxGTK 的源了:

在Code::Blocks试用与安装vim插件

安装之:


sudo dnf install wxGTK-devel-2.8.12-16.fc22.x86_64 -y

完成!

重新修改 wx 的值:为 /usr/include/wx-2.8/

重新编译:

在Code::Blocks试用与安装vim插件

这个可能要重新调整一下 vike-unix.cbp

在Code::Blocks试用与安装vim插件

再编译:

报找不到 wx/setup.h,博主就将之前倒腾的 wxWidgets 下的 setup.h 复制过来。

再编译,报:

在Code::Blocks试用与安装vim插件

说我应该通过执行 wx-config 来获取编译选项。

我查看 vike-unix.cbp,里面:

在Code::Blocks试用与安装vim插件

有这个,但我们可以在编译日志中没有看到 wx-config 有任何输出。博主手动执行了一下 wx-config,还真有内容:


[hevake_lcj@Hevake ~]$ wx-config --cflags
-I/usr/lib64/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread

那就来硬的,我们直接将下面这串复制到 vike-unix.cbp,覆盖 `wx-config --cflags`:

在Code::Blocks试用与安装vim插件

再编译:

找不到 tinyxml.h 文件,这个好办,安装一个 tinyxml-devel 就可以了。


sudo dnf install tinyxml-devel -y

再编译:

在Code::Blocks试用与安装vim插件

这下是链接出错了。说明编译是过了的。

查看链接日志:

在Code::Blocks试用与安装vim插件

可看链接库路径没有设置。进 settings --> Gobal variable ... 中,将 cb_dll_path 设置成 /usr/lib64。

再编译:

再是报上面的错误。不过,从上面的链接命令可以看到,只有 lcodeblocks,没有链接 wx 的库。而wxEvtHandler应该是wx库的内容。

在 /usr/lib64,查 find -name 'libwx_*.so' ,得到这个多:


./libwx_gtk2u_core-2.8.so
./libwx_gtk2u_richtext-2.8.so
./libwx_baseu-2.8.so
./libwx_gtk2u_adv-2.8.so
./libwx_baseu_net-2.8.so
./libwx_gtk2u_gl-2.8.so
./libwx_gtk2u_ogl-2.8.so
./libwx_gtk2u_gizmos-2.8.so
./libwx_gtk2u_qa-2.8.so
./libwx_gtk2u_media-2.8.so
./libwx_baseu_xml-2.8.so
./libwx_gtk2u_gizmos_xrc-2.8.so
./libwx_gtk2u_aui-2.8.so
./libwx_gtk2u_stc-2.8.so
./libwx_gtk2u_xrc-2.8.so
./libwx_gtk2u_svg-2.8.so
./libwx_gtk2u_html-2.8.so

到底应该链接哪一个呢?

看看 vike-unix.cbp 中关于链接的参数:

在Code::Blocks试用与安装vim插件

执行一下:wx-config --libs,结果:


[hevake_lcj@Hevake ~]$ wx-config --libs
-pthread -Wl,-z,relro   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8

又是编译过程中 wx-config 执行无效引起的。按上面一样的解决办法,直接将 wx-config --libs 的结果直接替换 vike-unix.cbp 中的 wx-config --libs:

在Code::Blocks试用与安装vim插件

再链接:

在Code::Blocks试用与安装vim插件

通过了!


那现在,再重新编译一下 Release 目标:

在Code::Blocks试用与安装vim插件

查看cbvike目录的build目录下,生成了这几个文件:

在Code::Blocks试用与安装vim插件

现在的问题是,如何安装这个插件?

在 Code::Blocks 中,Plugins-->Manage plugins...:

在Code::Blocks试用与安装vim插件

然后找到cbVike.cbplugin,结果安装时报错:

在Code::Blocks试用与安装vim插件

搞错没?我们这里有libcbVike.so,它却去找cbVike.so?

研究了半天,发现将 cbVike.cbplugin 重命名为 libcbVike.cbplugin 就能安装成功:

在Code::Blocks试用与安装vim插件



那现在最后一个问题:怎么开启与关闭 vim 插件功能?

查为,重新启动一下Code::Blocks,cbVike功能便开启了。



后记

之前有遇到 vike-unix.cbp 中 "wx-config --cflags" 与 "wx-config --libs" 未生效问题。

在Code::Blocks试用与安装vim插件

这个问题是由于先开了Code::Blocks后才安装的 wxGTK-devel,所以 wx-config 在每次编译的时候没有生效。

关闭Code::Blocks后再打开就可以了,不需要像上面那样直接修改 vike-unix.cbp 文件。


上一篇:【声学基础】20211007课堂笔记


下一篇:html5/CSS3鼠标滑过图片特效插件