Editplus配置VC++(1) 及相关注意事项
下篇文章:Editplus配置VC++(2) 与/d1reportSingleClassLayout
原本用的是VC++2010 现在换成了Visual Studio 2013,editplus相关配置方法基本不变。采用的办法是网上找到的cl.bat方法,这里总结下:
- 到VC的安装目录下,我这里是D:\VS\VS2013\VC\bin,在这里大家应该能看到vcvars32.bat和cl.exe两个文件。新建个文本文件,改名为cl.bat,我这里精简下,初步内容为:
@echo off call "%VS120COMNTOOLS%vsvars32.bat" if %1 == "" goto error
cl.exe /MT /EHa %1 goto :eof :error
echo Error:参数错误
goto :eof
注意里面的%VS120COMNTOOLS%,不同版本的VS该变量不同,如VS2010就是%VS100COMNTOOLS% ,具体变量名称大家可查看系统变量确定。也可用绝对路径。
%1是传入的源文件的全路径。批处理不能直接处理含空格的路径和文件名,因此传入的参数要带双引号,这将在EditPlus中设置。
/MT 是静态链接运行时库(生成的大小至少几十K),你可以修改为/MD,这样生成的exe大小甚至才几K。若想调试可改为 /MTd或/MDd,这样体积又进一步增大!
/EHa 是捕获C++异常处理(try 和 catch)
- Editplus中,工具->首选项->自定义工具,右侧选择添加工具,选程序,按此方法添加两个,内容如下:


注意黄框里的双引号不要省略,否则路径含空格时,会导致批处理中%1参数出错。工具组名称可点击右上角的组名按钮修改,这里起名为 编译 和 运行
- 添加其按钮到工具栏:在Editplus工具栏上,右键,选自定义,按如图配置:

- 重启Editplus,现在已可使用。确认工具->自定义组中你的工具组已被选择。第一个按钮是编译生成XX.obj和XX.exe文件,第二个按钮是执行XX.exe。
如何添加自定义include目录,lib目录,编译选项:
1、以添加Visual Leak Detector的支持为例,该工具很有用,可检查程序运行时是否内存泄露。首先修改其安装目录下的配置文件vld.ini :
输出文件名可修改,这里保持默认。第二个可选择file或both,建议both,这样,VS里直接调试时也会输出相关信息。

2、在cl.bat同一目录下新建cld.bat批处理文件,内容如下:
@echo off call "%VS120COMNTOOLS%vsvars32.bat" set INCLUDE=%INCLUDE%;D:\VS\Visual Leak Detector\include
set LIB=%LIB%;D:\VS\Visual Leak Detector\lib\Win32 if %1 == "" goto error
cl.exe /EHa /D "_DEBUG" /MTd %1 goto :eof :error
echo Error:参数错误
goto :eof
使用Visual Leak Detector需要添加安装目录下vld.h和vld.lib的路径,如上所示,注意set命令中等号=两侧不要有空格,
使用Visual Leak Detector必须要_DEBUG宏支持,因此在cl.exe选项中添加/D "_DEBUG" /MTd (有了/MTd,似乎直接定义了_DEBUG宏 因此/D "_DEBUG"可去除)
3、增添一个按钮。和之前添加编译按钮的方法相同,只需将命令框中的cl.bat改为cld.bat即可
4、使用Visual Leak Detector,简单例子如下:

由于_DEBUG, vld.h在运行cl.bat编译预处理时就不会被包含。。。去掉该宏也没事,多包含一个不需要的头文件不影响编译
运行关联cld.bat的编译按钮生成的XX.exe后,会在同一目录生成memory_leak_report.txt,通过该文件即可查看程序运行时内存泄露的详细信息
如果你始终想生成Debug版本,也可以直接合并cld.bat到cl.bat中,这样只需一个编译按钮了 !但考虑到运行效率,我还是分成两个文件了!
如何支持在Xp运行
我们在Editplus中编译的一般是win32控制台程序。vs2013默认编译的程序不能在xp上运行,会提示“不是有效的win32应用程序”。解决办法是链接时添加
/subsystem:console,5.01选项。但注意,如果编译选项用的是/MD或/MDd,可能在XP上仍然会运行不了,甚至在一个新装上的Win7上。。。因为它运行需要MSVCP120{D}.dll 。。。用/MT或/MTd则没事!!
好,继续,在我们的批处理中cl.exe命令下一行添加:
set cpp=%1
set obj=%cpp:~0,-4%obj"
if exist %obj% (
link.exe /subsystem:console,5.01 %obj%
)
%1是cpp文件的完整路径,这里通过环境变量来截去最后4个字符,并添加 obj" 这四个字符。这样obj变量存的就是生成的obj文件的路径了。然后通过link.exe重新链接。若不想链接两次,cl.exe选项添加 /c 。若编译出错,并不会生成.obj文件,因此用if exist语句判断一下。
这样以后编译的程序,理论可在windows 2000 with sp1以上系统中运行。经我测试,可以在xp和windows server 2003上运行。
注意: 1、这里是控制台程序。gui程序参数应改为/subsystem:windows,5.01
2、这几句批处理较简单,只是假设单文件,且后缀是.cpp ,如果你用的是.c等后缀,可参照修改
3、既然是win32控制台程序,win32... win32... 因此默认情况下,程序即可在32位机上运行。
如果你不想生成的.obj文件存在,可紧接link.exe ...语句: del %obj%
默认链接器会输出版权信息,链接选项添加 /nologo去除
完整内容:
cl.bat:
@echo off call "%VS120COMNTOOLS%vsvars32.bat" set INCLUDE=%INCLUDE%;D:\VS\Visual Leak Detector\includeset LIB=%LIB%;D:\VS\Visual Leak Detector\lib\Win32 if %1 == "" goto error
cl.exe /c /MT /EHa %1 ::利用环境变量实现字符串的修改
set cpp=%1
set obj=%cpp:~0,-4%obj" if exist %obj% (
link.exe /nologo /subsystem:console,5.01 %obj%
del %obj%
) goto :eof :error
echo Error:参数错误
goto :eof
cld.bat:
@echo off call "%VS120COMNTOOLS%vsvars32.bat" set INCLUDE=%INCLUDE%;D:\VS\Visual Leak Detector\include
set LIB=%LIB%;D:\VS\Visual Leak Detector\lib\Win32 if %1 == "" goto error
cl.exe /c /EHa /D "_DEBUG" /MTd %1 ::利用环境变量实现字符串的修改
set cpp=%1
set obj=%cpp:~0,-4%obj" if exist %obj% (
link.exe /nologo /subsystem:console,5.01 %obj%
del %obj%
) goto :eof :error
echo Error:参数错误
goto :eof
总结一下 ,
为了能在别的机器上运行,编译选项最好选择/MT或/MTd;为了能在XP等老系统上运行,还需加上/subsystem:console,5.01。。。
有了这两点,程序基本能在所有系统上运行了,这样即使生成的可执行文件大点也没什么了!
Editplus配置VC++(1) 及相关注意事项的更多相关文章
- Editplus配置VC++(2) 与/d1reportSingleClassLayout
前篇文章:Editplus配置VC++(1) 及相关注意事项 VC++有两个隐含编译选项/d1reportSingleClassLayout和/d1reportAllClassLayout /d1 ...
- richface的配置、用法介绍和注意事项
richface的配置.用法介绍和注意事项一.RichFaces (3.1.x) 技术需求 1.JDK 1.5 或更高版本: 2.支持的 JSF 实现: Sun JSF 1.1 RI - 1.2 My ...
- Editplus配置Java、Python、C/C++ (基于VS2010) 编译环境
1. 为什么要配置EditPlus使其能够编译运行Java.Python.C/C++等程序? EditPlus是一款轻量级(大约2M)的文本编辑器,实际开发中,只需要关联相应的编译工具就可以化身为一个 ...
- Redis相关注意事项
本文介绍了五个使用Redis使用时的注意事项.如果你在使用或者考虑使用Redis,你可以学习一下下面的一些建议,避免遇到以下提到的问题. 一.配置相关注意事项 1.涉及到内存的单位注意添加 b 1k ...
- 【编程开发】CMake相关注意事项
[编程开发]CMake相关注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ CMake是一个非常常用的跨平台移植的工具,CMake可用来生成不同平台下 ...
- EditPlus配置[C++] [Python] [Java] 编译运行环境
以前一直用Codeblocks写C++,eclipse写Java,再在eclipse里面集成PyDev写Python,首先无法忍受代码自动补全功能(这个功能也许你万分喜欢),也无法忍受如此重量级的ID ...
- Editplus配置java运行环境
Editplus配置java运行环境 下载及安装: editplus官网下载地址:https://www.editplus.com/ 安装方法和安装普通exe应用程序一样,选在安装路径,下一步下一步, ...
- arXiv 提交 pre-print 文章的相关注意事项
arXiv 提交 pre-print 文章的相关注意事项 2018-11-25 22:38:28 1. 有一个可以正常上传 paper 的 arXiv 账号:https://arxiv.org/ 这 ...
- 配置Jar包及相关依赖Jar包的本地存放路径
配置Jar包及相关依赖Jar包的本地存放路径 用 maven2 ,pom.xml中设置了依赖,会帮你下载所有依赖的.jar到 M2_REPO 指向的目录. M2_REPO是一个用来定义 maven 2 ...
随机推荐
- Spinner的深入学习
简介: spinner是一个列表选择框,会在用户选择后,展示一个列表供用户进行选择.Spinner是ViewGroup的间接子类,它和其他的Android控件一样,数据需要使用Adapter进行封装. ...
- node js 模块分类
核心模块 require('fs'); 核心模块是被编译成二进制代码 文件模块 require('../fs.js'); 对于加载模块时既没指出./ ../ /.../时,加载模块的搜索路径.如果'/ ...
- 针对focus和blur的Dom事件触发顺序
Dom事件触发顺序,拿文本框举例: 它会先触发focus事件,之后才会触发在有交点之后才能触发的一些如 click change 等事件(但如果有mousedown则先执行). 而相对于blur而言 ...
- IIS不能对网站添加默认文档(由于权限不足而无法写入配置文件)
IIS7以上版本配置网站时需要手动配置网站目录的文件夹权限 增加"IIS_IUSER"用户的修改权限 但增加后仍然提示“ 由于权限不足无法写入配置文件” 通常是Web.config ...
- c#创建、安装、卸载、调试windows服务的简单事例
最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉用c#创建.安装.卸载.调试windows服务的步骤. 一.创建windows服务 1.用VS创建windows ...
- Oracle等待事件db file parallel read
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...
- zabbix调用微信报警
1.注册微信企业号,可以选团体号(针对小团队) 2.创建管理组 3.创建部门,记住部门id (使用了部门id,发消息会发送到所有部门成员,所以如果要单独发送给某个用户,""这样设置 ...
- WEB压力测试工具Pylot试用
Pylot介绍 转载自[http://www.freehao123.com/pylot-web/] 为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发 ...
- 记一次奇怪IE动态加载js的乱码
1. 问题背景 某个老产品需要支持IE8,前端部分组件采用scrat开发体系进行开发的,当页面中内嵌的iframe的页面再加载组件js的时候,某些情况下会出现组件的js乱码,导致组件的js不能运行.而 ...
- LaTeX学习教程
本来我对LaTeX不是看好的,毕竟都是命令格式的.觉得有word就足够啦word可视化操作方便快捷. 但是由于要写论文等,在导师要求下潜心学习一下,不知不觉间被LaTeX的强大功能所吸引.现在很多出版 ...