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 的使用
首先简单介绍一下程序是如何编译链接的.程序写好之后,我们进行编译和链接来产生可执行程序.这时候,编译器为了完成编译和链接,需要知道很多信 息.比如要编译的文件是哪一个,使用哪些编译选项进行编译,编译好 ...
随机推荐
- (转)关于ARM9协处理器CP15及MCR和MRC指令
网址:http://blog.csdn.net/zhou1232006/article/details/6150198 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的 ...
- XCODE7新变化之-test
Xcode 7新鲜出炉,一大早下载下来就安装上了,急急地体验一把.这几天公司给的任务是单元测试,那我们一起来用新版本做一次测试吧. 除了官方发布的下载链接地址,分享本人的xcode 7下载地址,大家不 ...
- Visual Studio 2013 之 Productivity Power Tools
http://blogs.msdn.com/b/visualstudio_cn/archive/2014/02/20/visual-studio-2013-productivity-power-too ...
- [Firefly引擎][学习笔记一][已完结]带用户验证的聊天室
原地址:http://bbs.9miao.com/thread-44571-1-1.html 前言:早在群里看到大鸡蛋分享他们团队的Firefly引擎,但一直没有时间去仔细看看,恰好最近需要开发一个棋 ...
- POJ 1220 NUMBER BASE CONVERSION(较复杂的进制转换)
题目链接 题意 : 给你一个a进制的数串s,让你转化成b进制的输出. A = 10, B = 11, ..., Z = 35, a = 36, b = 37, ..., z = 61,0到9还是原来的 ...
- 2013 Multi-University Training Contest 4 Who's Aunt Zhang
看题就知道要用polya,但是当时没做出来,还是不是很熟悉polya!!! 总共有24种置换: 1. 不做任何旋转 K ^ (54 + 12 + 8) 2. 绕相对面中心的轴转 1) 90度 K ^ ...
- 1.Getting Started with ASP.NET MVC 5
Getting Started Start by installing and running Visual Studio Express 2013 for Web or Visual Studio ...
- Qt: 界面中使用中文(三种方法,QApplication::translate可指定编码)
界面中的字符串, 尽量的使用QObject::tr(text); 以便以后转换界面语言, 即使现在你还不考虑这个问题. 方法一: 每次设置时都使用: button->setText(QAppl ...
- Linux 阿里云挂载新分区
阿里云服务器可以自己购买数据盘并挂载使用,虽然官方也提供了挂载的教程,但是还是有些朋友不清楚其中的细节,为此,我在这里来给大家分享一下详细的挂载办法. 工具/原料 已经购买开通阿里云服务器,并且在开通 ...
- Java API ——Object类
1.Object类概述 1)类层次结构的根类. 2)所有类都直接或者间接的继承自该类. 3)构造方法 · public Object() · 子 ...