原本用的是VC++2010 现在换成了Visual Studio 2013,editplus相关配置方法基本不变。采用的办法是网上找到的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)
注意黄框里的双引号不要省略,否则路径含空格时,会导致批处理中%1参数出错。工具组名称可点击右上角的组名按钮修改,这里起名为 编译 和 运行
如何添加自定义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,通过该文件即可查看程序运行时内存泄露的详细信息
如果你始终想调试,检查内存泄露什么的,也可以直接添加到cl.bat中
如何支持在Xp运行
我们在Editplus中编译的一般是win32控制台程序。vs2013默认编译的程序不能在xp上运行,会提示“不是有效的win32应用程序”。解决办法是链接时添加
/subsystem:console,5.01选项。好,在我们的批处理中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