使用sublime编写c/c++ 总结
大块头IDE Visual studio太大了,记事本也能写代码但无疑是装逼过分了。写一些轻量级的c/c++代码使用sublime来写是个很好的选择。
三步走:
编译器(win下安装了vs就使用cl,没有可以安装Mingw使用g++),
配置环境变量。
sublime里配置 Build System
这是一篇总结,网上有很多具体的教程,这里主要总结windows下安装的经验。
先要有编译器,cl或者g++。
如果有了编译器之后,该配置环境变量了。
cl编译器需要的环境变量:
1. PATH
2. INCLUDE
3. LIB
MinGw的g++同样需要几个变量,不过它的名字不一样,分别叫LIBRARY_PATH,C_INCLUDEDE_PATH,PATH。键值本来就是视具体你电脑上这些文件的位置而定。
vs环境下按照文件位置可以分为三类:
1.vc目录 例如(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC)下的 bin lib include 目录。
2.mfc目录 例如(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc)下的 lib include目录。
3.windows sdk目录 例如(C:\Program Files (x86)\Windows Kits\8.1)下。
这些可以打开vs查看VC++目录。例如包含目录为$(VC_IncludePath);$(WindowsSDK_IncludePath);
有了环境变量就可以直接到命令行里测试,执行 "cl /EHsc a.c"或者"g++ a.c -o a"之类的命令,而不需要写上详细的绝对路径。
现在该打开Sublime Text3,选择tools,然后选择Build System,然后选择 New Build System。最后记得保存为后缀是.sublime-build。
解释下 Build System 的写法:
参考sublime默认配置的C++ singe file的写法。"ctrl+shift+B"会列出所有build的选项,默认有两个C++ single file,可以到sublime
的安装目录下的packages文件夹里找到C++.sublime-package,这就是个压缩文件,改后缀".zip"解压缩后就有了C++.sublime-build。
也可以通过Ctrl+Shift+P再install package的方式安装 PackageResourceViewer,通过在Command palette里输入
PackageResourceViewer:opensource来打开对应的文件来修改。sublime-build是个JSON文件,这些条目可增删改换顺序。如下的写法,一个"shell_cmd"条目加上两个变种(variants),那么完了后
ctrl+shift+B会发现多出3个build命令选项。每个build命令其实很简单,先想想在命令行下的命令怎么写,cl --help看看有什么选项。这些选项可以按需来写,比如/MDd,
/Zi,/Fo(相当于g++的 -o,cl里通常不需要)等。在通过&&(短路)、&(长路)将多条命令连接。
其中${file}或者 "$file" 》整个文件名。 ${file_path}/${file_base_name}》文件路径/文件名(不带后缀)
因为在sublime里运行没办法接收输入,所以再编辑个"Run in CMD"的variant。
推荐下我用的命令: "shell_cmd": "start cmd /k "cl /EHsc /Od ${file}&&cls&&${file_path}/${file_base_name}""
解决输入问题,编译语法报错问题,遗憾的是我的没办法到控制台输出中文,改utf-8也没用
贴上我的
{
"env":{ // 也可以在这里配置环境变量
"INCLUDE":"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\include;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\atlmfc\\include;C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\shared;C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\um;C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\winrt;D:\\myPath\\boost_1_61_0;%INCLUDE%",
"LIB":"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\lib;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\atlmfc\\lib;C:\\Program Files (x86)\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x86;D:\\myPath\\boost_1_61_0\\stage\\lib;%LIB%",
"PATH":"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools;D:\\myPath\\lua;%Path%"
},
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"encoding": "utf-8",
"shell_cmd": "cl /EHsc /Od \"$file\"&& ${file_path}/${file_base_name}", // 编译运行
//"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\"", //C++ single fileS
"variants":
[
{
"name": "Run in CMD",
//"shell_cmd": "cl /EHsc /Od \"$file\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""// For CL On Windows Only
"shell_cmd": "start cmd /k \"cl /EHsc /Od ${file}&&cls&&${file_path}/${file_base_name}\""//
//最佳方案 在 cmd上先编译,能够显示cl的编译错误 且能输入cin scanf,
//cmd 参数见 cmd /? “&&”短路规则 "&"是长路
//"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""// C++ singlefile Run
},
{
"name": "Compile dll",
"shell_cmd": "cl /EHsc /Od /c \"$file\"&&link /dll ${file/.cpp/.obj/}"// 编译 并连接成 dll
},
{
"name": "clean",
"shell_cmd": "del ${file/.cpp/.exe/} ${file/.cpp/.obj/}"// 清空 exe obj
}
]
}
使用sublime编写c/c++ 总结的更多相关文章
- 使用sublime编写python、php代码前的一些配置
1.使用sublime编写python代码 打开sublime软件,Tools —> Build System —> New Build System,得到后缀名为“sublime-bui ...
- sublime编写markdownm
sublime编写markdownm 以前用有道云笔记,找了半天更改字体大小,结果还找不 到,那个字实在是太小了,像我这种有强迫症的患者,实 在受不了简约风格的有道云,所以上网找了与和诺插件并 受到一 ...
- 使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码。
相信有些同学在使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码吧.我今天就遇到了这样的问题. 第一步:重新设置一下你的meta,设置 ...
- 如何用sublime 编写sass
使用了Sublime Text也有一段时日了,然后在现在而言,小觉的coding工具已经非其莫属了,接着小觉因为近期忙着项目的原因,同时还要抽空编辑博客的原因,就暂时把它放在一旁了,现在偶然想起也就说 ...
- 我在 Ubuntu 下使用 Sublime 编写 python 代码时遇到并解决的问题
Ubuntu 下 Sublime 无法输入中文 解决方法如下: sudo apt-get update && sudo apt-get upgrade 克隆项目到本地 : git cl ...
- Sublime编写React必备插件
我终于看到了我要的攻略,sublime自带的format实在是不能看不能看不能看. 攻略地址:http://www.jianshu.com/p/ecf6c802fdc5?open_source=wei ...
- sublime编写markdown文件中Ctrl+B的作用
今天,手残,用markdown编辑是按了Ctrl+B,结果发现直接在同一文件夹目录下编译生成了html文件,之前都是Alt+m,可以直接预览,可是后来由于系统更新还是什么,Alt+m只会在用户目录(而 ...
- linux默认编辑器 sublime
开发人员把Vi improved简称Vim Vim编辑器再内存缓冲区中处理数据. 如果再启动Vim时未指定文件名,或者这个文件不存在,Vim会新开一段缓冲区域来编辑. 如果你再命令行下指定了一个已有文 ...
- Sublime Text使用心得(一)
以前写web前端样式都是用eclipse.myeclispe这些IDE开发工具,现在想纯粹的写点HTML的东西,一心想找一个轻量的编辑器,这样能够随手打开编写,方便平时业余学习.网上搜罗了一堆编辑器, ...
随机推荐
- 利用yii2 gridview实现批量删除案例[转]
今天仍然继续探讨GridView的问题,昨天有个小伙伴留言说你用gridview给我去掉表头的链接?我想啊想,这用gridview确实不容易实现,至少我没想出来,会的下方可留言.但是呢,这根gridv ...
- ROS笔记——创建简单的主题发布节点和主题订阅节点
在安装好ROS后,接着学习如何创建节点和节点之间的通信方式,以一个简单的主题发布节点和主题订阅节点说明. 节点是连接ROS网络等可执行文件,是实现某些功能的软件包,也是一个主要计算执行的进程. 一.创 ...
- mac 端口被占用及kill端口
在本地部署 Web 应用时我有遇到过某网络端口已经被其他程序占用的情况,这时候就需要先退出占用该端口的进程,我们可以通过“终端”来实现结束占用某特定端口的进程 1.打开终端,使用如下命令: lsof ...
- Devexpress XtraReport 打印时弹出Margins提示解决办法
当我们用Dev的报表引擎做报表时,如果把边缘设置为0时会弹出提示. 可以通过代码 XtraReport.PrintingSystem.ShowMarginsWarning = false; 取消该提示
- IOS App 右上脚红色数字提醒
IOS8.0以前直接显示: UIApplication *application=[UIApplication sharedApplication]; //设置图标上的更新数字 application ...
- AngularJs的UI组件ui-Bootstrap分享(十三)——Progressbar
进度条控件有两种指令,第一种是uib-progressbar指令,表示单一颜色和进度的一个进度条.第二种是uib-bar和uib-progress指令,表示多种颜色和多个进度组合而成的一个进度条. 这 ...
- NFS网络文件系统安装配置
简介 NFS(Network File System)FS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络共享数据.客户端用mount命令把远程的NFS文件系统挂载到本地即可,操 ...
- Sql Server 查看表修改记录
可以尝试如下建议:1.可以使用默认的Log工具或者第三方的(比如:LiteSpeed)的工具.2.做Trace机制,下次出现问题可以溯源.3.一个简单的办法: --Step #1: USE DBNam ...
- php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名
<?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...
- fushioncharts 使用教程要点---使用JSON数据方式
1.建立图表步骤: A.下载fushionChart,引入FusionCharts.js和FusionChartsExportComponent.js文件 B.建立图表对象 var chart1 = ...