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

简介:

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

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

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

131801_NtPp_243525.png

它各种鲜明的高亮一下子就征服了博主。主要是对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 的源码路径,至少是头文件的路径。

133549_Hf8q_243525.png

那就是说要找到 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 .. ,可以在弹出的对话框中看到:

134338_B8Q0_243525.png

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

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

134725_FFBj_243525.png

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


sudo dnf install gtk2-devel -y

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

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

135317_SkWg_243525.png

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

135853_5mdY_243525.png

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

Settings --> Global variables...

140216_o1nj_243525.png

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

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

编译~

报错:sdk.h 找不到

141056_tzEg_243525.png

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

141457_vf3f_243525.png

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

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

141811_RP7n_243525.png

再编译~

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

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

142229_BS8g_243525.png

再编译~

142445_Tu0K_243525.png

查源码:

142937_c37P_243525.png

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

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

145941_zJGR_243525.png 

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

150135_gdpd_243525.png

在 config.log 中查得 ac_cv_sizeof_wchar_t 为 4 :

150446_hvZH_243525.png

而且在 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 的源了:

161259_Jr80_243525.png

安装之:


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

完成!

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

重新编译:

162224_tWmZ_243525.png

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

162316_35LB_243525.png

再编译:

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

再编译,报:

163527_hPmN_243525.png

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

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

163722_u4mb_243525.png

有这个,但我们可以在编译日志中没有看到 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`:

164033_F7Ef_243525.png

再编译:

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


sudo dnf install tinyxml-devel -y

再编译:

165253_toHR_243525.png

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

查看链接日志:

165724_mUFh_243525.png

可看链接库路径没有设置。进 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 中关于链接的参数:

170702_4jT9_243525.png

执行一下: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:

171005_gYvl_243525.png

再链接:

171207_TYNb_243525.png

通过了!


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

171519_6ftR_243525.png

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

172701_L6Zm_243525.png

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

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

172034_aFBE_243525.png

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

172923_J5oo_243525.png

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

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

201139_BDGB_243525.png



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

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



后记

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

163722_u4mb_243525.png

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

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


目录
相关文章
|
23天前
|
XML IDE 开发工具
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
别看你风吹头顶凉但你绝对没有过这样方便的插件Intellij IDEA 自带的 Vim
40 0
|
7月前
|
缓存 Ubuntu Linux
Vim编辑器入门指南:安装、基本操作和高级技巧详解 | 适用于Linux系统
Vim编辑器入门指南:安装、基本操作和高级技巧详解 | 适用于Linux系统
289 0
|
5月前
|
Linux 开发工具
什么是Vim,Vim安装
Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。作为一名 Linux 初学者,你必须熟练掌握 Linux 中至少一款文本编辑器的用法。对文本编辑器的功能(如查找、剪切和粘贴)了解越多,对你越有帮助。可供选择的编辑器不止一种,例如 Vim、emacs、pico、nano 等,很多人都找到了自己所喜爱的编辑器。综合考虑各种因素,本套 Linux 教程建议初学者学习 Vim 文本编辑器。Vim文本编辑器,是由 vi 发展演变过来的文本编辑器,因其具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器等特点,成功圈住了很多人成为其死忠粉丝。
48 4
|
9天前
|
Linux 程序员 开发工具
最强文本编辑器 VIM 获取与安装
最强文本编辑器 VIM 获取与安装
|
5月前
|
JSON Linux 开发工具
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
58 0
|
3月前
|
Ubuntu 开发工具
百度搜索:蓝易云【Ubuntu安装vim教程】
现在,你已经成功在Ubuntu上安装了Vim编辑器。你可以在终端中运行 `vim`命令来启动Vim,并开始编辑文本文件。
45 2
|
9月前
|
Ubuntu Linux 开发工具
嵌入式Linux开发环境搭建之四----Vim的安装
嵌入式Linux开发环境搭建之四----Vim的安装
63 0
|
10月前
|
API 开发工具 开发者
vim插件开发之python-helloworld插件
vim插件开发之python-helloworld插件
88 0
|
10月前
|
Java API 开发工具
vim插件开发之osc动弹插件
vim插件开发之osc动弹插件
97 0
|
10月前
|
Unix Linux 开发工具
vim插件开发之helloworld插件
vim插件开发之helloworld插件
106 0