Many of the popular free compilers once used with text editors are now considered outdated. Today, the trend is towards using dedicated IDEs to write and compile code in an integrated environment such as Visual C++ Studio, or with other IDEs designed to be compatible with one or more independently developed compilers. Because IDEs have largely replaced the now out-of-fashion text editor as the standard coding environment, many text editors are no longer developed, supported or updated specifically for use with compilers. Because of these factors, many text editors may no longer work easily with up-to-date compilers. This guide provides one workaround solution.
The instructions for this guide were tested on a PC running Windows XP SP3, Visual C++ Studio Express 2010, and using the PSPad (ver 4.5.3) text editor. The instructions should be similar for other versions of Windows, Visual C++ Studio editions, and other text editors.
Visual Studio’s compiler is the cl.exe executable located in the “C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\” directory. Without getting into all the technical details, this file only executes properly within Visual Studio’s integrated environment, so directly setting it up in PSPad’s highlighter settings won’t work. In fact, even if you try to execute cl.exe from a Windows Command window within Visual Studio, you will get an error. The solution is to compile from Visual Studio’s command window, which looks just like a regular Windows Command window, but is actually the Visual Studio environment. To accomplish this, the source code file from the text editor is passed to a batch file, which starts Visual Studio’s environment and compiles the file. Sounds somewhat complicated, but it’s simple once explained.
Below is the batch file code:
@echo off REM This file allows text editors to compile C++ files in Visual C++. REM Modified from the shortcut in Program Files CALL "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" REM For 32bit Intel Processors rem CALL "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" cl.exe /EHsc %1 pause
Basically, the batch file consists of only four lines: (1) @echo off, (2) CALL the Visual Studio environment, (3) pass the source file to cl.exe with parameters, and (4) pause. That’s it. Copy the code and save it with a .bat file extension. I saved my file as vsbat.bat. There are two CALL commands in the batch file to two batch files in VS (Visual Studio). The first (vcvarsall.bat) is the path taken from the shortcut for the VS Command window in the start menu and slightly modified for use in the batch file above. The other (vcvars32.bat), is the path for the VS environment batch file for 32bit processors in the “VC\bin\” directory. If you have another processor, or use another edition of VS, either batch file may have a slightly different path, name and/or contents depending on your processor. If any of the paths are different from those above, just right click on the VS Command prompt icon in the start menu and and select properties to get the path and change the above batch file accordingly. In any case, both CALL statements just start the VS environment in a Command window according to the processor type. In the above batch file, the 32bit Intel Processor command is commented out but left in for information purposes. The first one should be the only one necessary. The cl.exe command starts the compiler with the “/EHsc” option which tells the compiler not to throw a C++ exception and “%1”, which is the source file parameter passed to the batch file. Finally, pause just keeps the command window from closing.
Save the above batch file somewhere on your PC and start PSPad. Select Settings->Highlighter Settings->C/C++->Compiler Tab in PSPad’s menu. Enter the information as shown in the screenshot below (click to enlarge image):
For the Compiler setting, enter the path to the batch file you saved (vsbat.bat). For the Parameters setting, enter “%File%” (with parentheses), which is the source file currently loaded in the editor. The Default Directory entry is optional and self-explanatory. For the Run after Compilation setting enter “cmd.exe /K %Name%.exe” to automatically run the executable after compilation (after closing the VS Command Window). Check the Save All Files Before Compilation box and hit OK to save the settings. That’s it. PSPad is ready to compile C++ source files with Visual Studio and to run its executables.