Notepad++中调用cl.exe编译器(Windows)
Notepad++中调用cl.exe编译器(Windows)#
近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误。但有时候一些零碎的小文件总是懒得再VS中打开,VS打开又慢又占资源。回想Emacs、Vim中调用gdb的方式,想着notepad++有没有类似的插件。嗯,结果在Plugin Manager找到了NppExec。
NppExec简介##
安装NppExec后,可以通过菜单中的选项调出NppExec的Manual。User Guide的标题很好的解释了NppExec:
"A Notepad++ Plugin that Allows You to Run Commands and Programs Directly from the Editor."
关于NppExec的各种功能,Manual中有详细的介绍,以下是我主要用到的几个。
Execute...对话框###
在该对话框中,可以以行为单位输入要执行的命令。注意,这里的命令是在NppExec中执行的。
ENV_ SET 和 ENV_ UNSET###
顾名思义,设置环境变量和取消环境变量。
SET 和 UNSET###
通过set设置的变量只能在NppExec内部使用,可以这样理解:只能被NppExec本身使用,不能被NppExec调用的subprocess和external tools使用。比如,我通过NppExec调用了cmd,那么这些变量能在NppExec中调用,但是不能在cmd中使用。这个功能是相对于上一个的,相比较之后想必不难理解。
Try it##
1.既然要编译源码,第一个想到的就是调用cl.exe。如此,便在Execute...对话框中输入以下命令:
D:\vs2013\installations\vc\bin\cl "C:\Users\Gaoxin\Desktop\Modern compiler implementation in C\Chapter 1\util.cpp"
前一个是cl.exe所在目录地址,后一个是源文件的绝对目录地址(目录中包含空格,所以目录用双引号包裹起来)。然而当我执行的时候,却显示:
fatal error C1034: assert.h: no include path set(util.cpp中包含了#include<assert.h>指令)。
2.no include path set !!!什么鬼!!! include path没有设置吗?!以前调用的VS 命令行的时候怎么没有这茬!好吧,搜索之后告诉我可以先调用cl.exe同目录下的vcvars32.bat来正确设置编译链接所需的路径。加上该批文件调用后:
D:\vs2013\installations\vc\bin\vcvars32.bat
D:\vs2013\installations\vc\bin\cl "C:\Users\Gaoxin\Desktop\Modern compiler implementation in C\Chapter 1\util.cpp"
执行显示:

可以看到,NppExec把两个命令分成两个process来执行。而先设置include path,后调用cl.exe,这两个命令应该在同一个process中执行。很自然的,想到了bat。
3.以下是批处理文件内容,仅两行:
`call D:\vs2013\installations\vc\bin\vcvars32.bat`
`D:\vs2013\installations\vc\bin\cl "C:\Users\Gaoxin\Desktop\Modern compiler implementation in C\Chapter 1\util.cpp"`
执行显示:

nice!
More convenient##
虽然脚本是写好了,但实在是太难看了,可以用NppExec的环境变量设置功能来改善一下。见图:

- ENV_SET--------设置环境变量。
- cmd /k MyNppExecScript.bat--------在cmd中调用批处理文件。
- ENV_UNSET--------取消环境变量。
我们可以在批文件中调用设置的环境变量,因为在变量的设置在调用之前,取消在调用之后。批文件中的命令基于这里设置的变量,因此,当工程目录、cl编译器目录、工程下的文件目录、文件名字改变时,我们只需要在该对话框中更改就可以了。
MyNppExecScript.bat见下图:

- @echo off--------关闭回显。
- call "%PROJECT_CL_PATH%\vcvars32.bat"--------调用子脚本,双引号在目录包含空格时为必须。调用另一个批处理程序,并且不终止父批处理程序。
- cls--------清屏
- cl "%PROJECT_DIR%%FILE_DIR%%FILE_NAME%"--------调用cl.exe编译器编译源文件。
更多功能请参见NppExec Manual。
Notepad++中调用cl.exe编译器(Windows)的更多相关文章
- microsoft cl.exe 编译器
cl.exe是visual stdio 内置的编译器,visual stdio包含各种功能,有些功能可能这辈子都用不到,体积庞大,如果是 开发比较大或者有图形的项目,vs是首选.更多情况时更喜欢使用文 ...
- C++程序中调用其他exe可执行文件方法
在编程过程中有个需求,点击某个按钮需要弹出系统的声音控制面板.在网上查了下代码中调用其他exe程序或者打开其他文件的方法. 自己借鉴网上的文章稍微总结下,加深下印象,也给方便自己用. 在代码中调用其他 ...
- 通过命令行使用cl.exe编译器
转载http://www.cnblogs.com/mizhongqin/archive/2013/03/11/cmd_cl-exe_vs2010.html 与在IDE中编译相比,命令行模式编译速度更快 ...
- [转]VC中调用外部exe程序方式
本文转自:http://blog.sina.com.cn/s/blog_486285690100ljwu.html 目前知道三种方式:WinExec,ShellExecute ,CreateProce ...
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”
首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用. 通常,在模块的头文件中对本模块提供给其它模块 ...
- html中调用本地exe应用程序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- vs中出现CL.exe已退出的情况总结
1.函数具有返回值 在定义时没有加上返回值 2.使用未初始化的内存 比如 #include<stdio.h> int main() { int a; printf("%d&quo ...
- 调用Visual Studio的cl.exe编译C/C++程序
@ 目录 调用Visual Studio的cl.exe编译C/C++程序 前言 1.查看VS的路径 2.添加环境变量 3.查看设置是否生效 4.配置Notepad++ 调用Visual Studio的 ...
- vc中nmake.exe cl.exe 的使用
首先简单介绍一下程序是如何编译链接的.程序写好之后,我们进行编译和链接来产生可执行程序.这时候,编译器为了完成编译和链接,需要知道很多信 息.比如要编译的文件是哪一个,使用哪些编译选项进行编译,编译好 ...
随机推荐
- js获取节点
demo1: <!-- <div id="test" v="1">你好</div> --> // console.log(t ...
- EasyUI Datagrid 取编辑修改后的内容
<script type="text/javascript"> $(function () { $('#tt').datagrid({ iconCls: 'icon-e ...
- PAT-乙级-1026. 程序运行时间(15)
1026. 程序运行时间(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 要获得一个C语言程序的运行时间, ...
- 利用钩子函数来捕捉键盘响应的windows应用程序
一:引言: 你也许一直对金山词霸的屏幕抓词的实现原理感到困惑,你也许希望将你的键盘,鼠标的活动适时的记录下来,甚至你想知道木马在windows操作系统是怎样进行木马dll的加载的…..其实这些都是用到 ...
- <转>struts2中Convention中的basePackage与locators配置种种
用了Convention插件来实现所谓的0配置, 1. struts.convention.package.locators.basePackage=com.ZTest.web.action 这个属性 ...
- hdu 4403
水水的dfs #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath& ...
- properties配置文件中文乱码解决方法
方法1 properties文件的格式一般为: ROOT=http://localhost:8080/BNCAR2/ ROOTPATH=E:/ws2/BNCAR2/rel/ MALL_PARTS_ ...
- HDU4647+贪心
/* 贪心. 题意:给定一些点 一些边 点和边都有价值.现在A B 选点.求A-B的maxVal 思路:分割边.边的1/2分给两个端点. 如果这两个点被同一个人取,则ok:否则 做减法也行,对题意无影 ...
- highcharts 柱状图
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- (组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)
/* * POJ_2249.cpp * * Created on: 2013年10月8日 * Author: Administrator */ #include <iostream> #i ...