Sublime Text 3下C/C++开发环境搭建
Sublime Text 3下C/C++开发环境搭建
之前在Linux Mint 17一周使用体验中简单介绍过Sublime Text。
1.Sublime Text 3安装
Ubuntu、Linux Mint的软件管理器中已经能够找到Sublime Text 3,直接安装即可。或者去官网下载.deb或tarball安装包,手动安装。
2.Package Control管理器
ST最吸引我的第一点就是这个非常棒的扩展管理器
!安装方法也很简单,在ST中按Ctrl+`进入ST的控制台,然后去官网上将ST3的安装命令拷贝到其中执行就可以完成安装了。有了它,在ST中按Ctrl+Shift+P,输入Install或Remove后,就可以随便安装、卸载各种扩展了,包括各种ST的插件、主题等等。
3.推荐必装扩展插件
根据Package Control上的流行度统计,推荐安装以下扩展插件:
Package Name | Description |
---|---|
Emmet | Emmet (ex-Zen Coding) for Sublime Text |
SublimeLinter | Interactive code linting framework for Sublime Text 3 |
SideBarEnhancements | Enhancements to Sublime Text sidebar. Files and folders |
BracketHighlighter | Bracket and tag highlighter for Sublime Text |
SublimeCodeIntel | Full-featured code intelligence and smart autocomplete engine |
HTML5 | HTML5 bundle for Sublime Text |
Alignment | Easy alignment of multiple selections and multi-line selections |
Git | Plugin for some git integration into sublime text |
DocBlockr | Simplifies writing DocBlock comments in Javascript, PHP, CoffeeScript, Actionscript, C & C++ |
ConvertToUTF8 | A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc |
All Autocomplete | Extend Sublime autocompletion to find matches in all open files of the current window |
Markdown Preview | markdown preview and build plugin for sublime text 2/3 |
MarkdownEditing | Powerful Markdown package for Sublime Text with better syntax understanding and good color schemes. |
简单分门别类地介绍一下主要的扩展插件的用途:
- 开发类:Emmet就是大名鼎鼎的Zen Coding;BracketHighlighter能高亮匹配的一对括号;DocBlockr能自动生成类似JavaDoc的注释;auto-save在Ctrl+B编译时自动保存文件。
- 增强类:SideBarEnhancements能丰富侧边栏的导航菜单;ConvertToUTF8支持编译中文等文件;SyncedSideBar实时更新侧边栏中的文件夹和文件。
- 文档类:用ST写Markdown也很方便,安装Markdown Preview和MarkdownEditing两个插件(注意:一定要全局配置ignored_packages: [“Markdown”]禁用ST默认的Markdown插件),就能在ST内和浏览器中实时预览md文件的渲染效果;FileDiffs对比两个文件的差异。
- 主题类:Soda是排名最高的Theme,而SpaceGray则是排名最高的Scheme,用起来效果的确不错;Table Editor也是必装的,上面的表格就是用它编译出来的,操作类似于Emacs下的Orgmode中的表格,但要注意的几点是:
- 通过Ctrl+Shift+P->
Table Editor: Enable for current view
开启。 - 先输入标题行,回车后在第二行输入
|-
后,按tab键就将进入Table编辑模式。 - 表格必须与前面输入的文字之间有空行,否则表格会被当成普通文字渲染。
- 通过Ctrl+Shift+P->
4.全局配置
在菜单栏的Preferences->Settings-User中,我们可以对ST进行一些全局上的配置,例如网络代理、Theme主题、Scheme配色等:
{
"theme": "Soda Dark.sublime-theme",
"soda_classic_tabs": true,
"soda_folder_icons": true,
"color_scheme": "Packages/Theme - Spacegray/base16-eighties.dark.tmTheme",
"http_proxy": "ip:8080",
"proxy_password": "******",
"proxy_username": "cdai",
"ignored_packages":
[
"Vintage", "Markdown"
],
"file_exclude_patterns": [".tags", ".tags_sorted_by_file", "*.exe"]
}
5.C/C++开发环境
5.1 惯例优先于配置
ST最吸引我的第二点就是默认的开发环境配置
,其思想就是类似于Rails或Struts2中的Convention Over Configuration,智能地配置好环境,如果用户有特殊需求则自行配置。新建个hello.c文件,ST能自动识别出语言并进行语法高亮。最棒的是Ctrl+Shift+P输入Run后,选择“Run single file with G++”一项就能自动找到G++(如果已经安装的话)并执行。下载个Redis源码包解压开试试,点击“Open Folder”选择Redis根目录添加进来,然后同理Ctrl+Shift+P这次选择“Make”那一项就能自动编译!
5.2 Windows平台下开发
下面就是本文的重点了,以C/C++开发为例,着重介绍一下C/C++开发的插件以及在Windows 7平台下,如何利用Cygwin或Mingw开发和交叉编译Linux程序。
5.2.1 安装扩展插件
首先安装插件SublimeClang智能提示、C++ Snippets代码模板,如有需要也可以自行安装CTags。
5.2.2 新建Build System
Windows平台就不属于上面提到的Convention,所以需要我们自己配置编译选项。打开Tools->Build System->New Build System:
{
"path": "D:\\cygwin64\\bin",
"cmd": ["gcc", "-I", "D:\\cygwin64\\usr\\include", "${file}", "-o", "${file_path}/${file_base_name}", "-lm", "-Wall", "&", "start", "${file_path}/${file_base_name}.exe"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"shell": true,
"variants":
[
{
"name": "Run::Cygwin",
"cmd": [ "start", "${file_path}/${file_base_name}.exe"]
}
]
}
简单解释一下:
- path就是Cygwin或Mingw的bin目录。
- cmd是一串命令,当Ctrl+B编译时会触发。这里直接将start xxx.exe拼接到命令尾部,所以当Ctrl+B编译时就会先编译,然后自动启动一个命令行窗口(配合后面的shell:true选项)运行刚刚编译成的exe程序,很方便!
- selector的作用就是,当Tools->Build System是Automatic时,根据当前源文件的后缀名决定是否触发当前Build System。我们想只用Cygwin的GCC处理C,那么就写成source.c就可以了。
- variants的name会添加到Tools->Build System菜单下。当然如果前面的cmd命令=编译+运行,也就不经常使用此菜单项了。
5.2.3 配置SublimeClang
默认情况下,Clang找不到Cygwin或Mingw自带的头文件,所以需要配置一下智能提示才能好用。打开Preferences->Package Settings->SublimeClang->Settings-User:__
{
"show_output_panel": false,
"dont_prepend_clang_includes": true,
"inhibit_sublime_completions": false,
"options":
[
"-ID:\\cygwin64\\usr\\include",
"-ID:\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\4.9.2\\include",
"-ID:\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\4.9.2\\include\\c++",
"-ID:\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\4.9.2\\include\\c++\\*"
]
}
注意:SublimeClang的作者已经停止更新,所以不支持Sublime Text 3了。Linux下可以按以下方法fix这个问题,Windows下更简单些,直接从SublimeClang网站上下载zip包后,解压出libclang.dll和libcache.dll放到SublimeClang/internals下就可以了:
// 手动下载SublimeClang源码
cd ~./config/sublime-text-3/Packages
git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang
cd SublimeClang
git pull && git submodule foreach --recursive git pull origin master
// 拷贝libclang.so到internals文件夹
sudo apt-get install libclang-3.5
ldconfig -p | grep clang
cp /usr/lib/i386-linux-gnu/libclang-3.5.so ~/.config/sublime-text-3/Packages/SublimeClang/internals/libclang.so
// 手动编译出libcache.so
cd src
mkdir build
cd build
cmake ..
make
现在启动Sublime Text 3就可以了!
5.2.4 配置CTags
CTags是一个古老的插件,能够实现函数导航和跳转功能,在ST中使用它分为三步:
- 首先从ctags的sourceforge官网上下载安装包,解压到一个目录后,将目录添加到Windows的环境变量中。
- 在ST中Ctrl+Shift+P,通过Package Control安装CTags插件。
- 在项目根目录上右键,能看到多出一个
CTags: Rebuild Tags
菜单。执行后就可以在我们的项目中自由的跳转了!
注意:Rebuild Tags后会在根目录下产生.tags和.tags_sorted_by_file两个索引文件。可以在Preferences->Settings-User中添加配置使其隐藏:
"file_exclude_patterns": [".tags", ".tags_sorted_by_file"]
现在就大功告成了!一个简洁快速、外观酷炫的Sublime Text可以使用了!
2015/05/16 补充:Sublime Text 3支持中文输入
按照百度经验上的指导,真的好使了。而且此方法不只是针对搜狗输入法,我的Linux Mint装的是谷歌输入法也好使了,应该是各种输入法都通用吧。
1.新建sublime_imfix.c(我是在~/Temp下新建的):
#include <gtk/gtkimcontext.h>
void gtk_im_context_set_client_window (GtkIMContext *context,
GdkWindow *window)
{
GtkIMContextClass *klass;
g_return_if_fail (GTK_IS_IM_CONTEXT (context));
klass = GTK_IM_CONTEXT_GET_CLASS (context);
if (klass->set_client_window)
klass->set_client_window (context, window);
g_object_set_data(G_OBJECT(context),"window",window);
if(!GDK_IS_WINDOW (window))
return;
int width = gdk_window_get_width(window);
int height = gdk_window_get_height(window);
if(width != 0 && height !=0)
gtk_im_context_focus_in(context);
}
2.编译出.so动态链接库(需要libgtk支持),并拷贝到/opt/sublime_text下:
// 编译出.so动态链接库(需要libgtk支持)
sudo apt-get install libgtk2.0-dev
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
sudo cp ~/Temp/libsublime-imfix.so /opt/sublime_text/
3.打开/usr/bin/subl
#!/bin/sh
exec /opt/sublime_text/sublime_text "$@"
// 修改为
#!/bin/sh
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"
4.打开/usr/share/applications/sublime_text.desktop
Exec=/opt/sublime_text/sublime_text %F
Exec=/opt/sublime_text/sublime_text -n
Exec=/opt/sublime_text/sublime_text --command new_file
// 修改为
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"
现在打开Sublime Text就可以输入中文了!
Sublime Text 3下C/C++开发环境搭建的更多相关文章
- 翻译:打造基于Sublime Text 3的全能python开发环境
原文地址:https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/ ...
- 阿里云ACE下的PHP开发环境搭建
阿里云ACE下的PHP开发环境搭建 本系列文章由ex_net(张建波)编写.转载请注明出处. http://blog.csdn.net/ex_net/article/details/23999053 ...
- Windows下C,C++开发环境搭建指南
Windows下C,C++开发环境搭建指南 前情提要 基于近一段时间很多网友发邮件反馈,说一些项目编译出现问题,诸如此类的情况. 就觉得很有必要写一篇C,C++开发环境的小指南,统一回复. 1.君欲善 ...
- [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题) 网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...
- 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...
- windows下vue.js开发环境搭建教程
这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...
- PHP:IIS下的PHP开发环境搭建
背景 发现书柜中有好几本PHP的图书,决定还是学学PHP,本文介绍一下在Windows环境下PHP开发环境的搭建. 运行环境搭建 下载和安装下面三个软件: IIS. http://php.iis.ne ...
- Win7下 OpenCV+Qt开发环境搭建
1.所需软件工具: (1)OpenCV开发库,2.4.9版:包括源文件(source文件夹)和编译后的文件(build文件夹),但最好自己使用CMake又一次编译.否则easy出错. (2)Qt Cr ...
- Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时 ...
随机推荐
- WPF 字符串溢出判断,字符串长度是否超过控件宽度
TextBloc可以将TextTrimming属性设置为CharacterEllipsis 其他控件可以在控件大小变更或者其他事件上附加下列方法 private void OnEllipsis(obj ...
- rf常用关键字总结
上传文件choose file 用法:choose file 元素定位 文件路径\\文件名 此处注意:复制的路径是/,需全部替换成\\ 清除Clear Element Tex ...
- [Codeforces 946G]Almost Increasing Array
Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) .现在准许你删除任意一个数,删除之后需要修改最小的次数使序列单调递增.问最小次数. \(1\leq n\leq 200 ...
- C++Primer学习——未定义行为
定义: 主要是求值顺序的问题 int i = f1() + f2(); //我们无法知道是f1 还是 f2先被调用 而且求值顺序和优先级和结合律无关,比如: f() + g()*h( ...
- Git常用命令及常见问题解决
$ mkdir xxx ----创建xxx目录 $ cd learngit ----切到xxx目录下 $ pwd ----查看当前文件所在目录 $ gi ...
- sprintf()、fprintf()、fscanf()的用法
sprintf函数的用法1.该函数包含在stdio.h的头文件中. 2.sprintf和平时我们常用的printf函数的功能很相似.sprintf函数打印到字符串中,而printf函数打印输出到屏幕上 ...
- P20 旅行助手,从未有过的至尊私人导游服务!
旅行可以让人暂时抛掉生活中的琐事,工作上的压力,寻找内心的宁静.有的人是为了想多去见识不同的事物和人文风情,有的人是想去感受大自然的馈赠,看历史古迹感受古人智慧.歌德说过:人之所以爱旅行,不是为了抵达 ...
- 腾讯云H5语音通信QoE优化
本文首发在云+社区,未经许可,不得转载. 云+导语:4月21日,腾讯云+社区在京举办"'音'你而来,'视'而可见--音视频技术开发实战沙龙",腾讯音视频实验室高级工程师张轲围绕网络 ...
- gulp将多张小图自动合成雪碧图
最近一直在做移动端的改版项目,做之前老大就跟我说了好几次,说这次改版一定要用雪碧图减少一个页面的图片的请求次数,能加快页面的加载速度就一定要加快,我说可以.因为之前的项目开发时间过短,也没有时间去慢慢 ...
- Servlet技术 Cookie与Session
会话过程:用户打开浏览器,点击链接访问资源,最后到关闭浏览器的整个过程称之为会话. 会话使用:与服务器进行会话的过程中产生数据,数据被保存下来,服务器根据数据对客户进行辨别,做出个性化的响应. 介绍两 ...