1INSTALLpc.txt - Installation of Vim on PC 2 3This file contains instructions for compiling Vim. If you already have an 4executable version of Vim, you don't need this. 5 6More information can be found here: (Very stale now.) 7 8 http://mywebpage.netscape.com/sharppeople/vim/howto/ 9 10The file "feature.h" can be edited to match your preferences. You can skip 11this, then you will get the default behavior as is documented, which should 12be fine for most people. 13 14With the exception of two sections (Windows 3.1 and MS-DOS), this document 15assumes that you are building Vim for Win32 or later. 16(Windows 95/98/Me/NT/2000/XP/2003/Vista/7) 17 18 19Contents: 201. Microsoft Visual C++ 212. Using MinGW 223. Cygwin 234. Borland 245. Cross compiling for Win32 from a Linux machine 256. Building with Python support 267. Building with MzScheme support 278. Windows 3.1 289. MS-DOS 29 3010. Installing after building from sources 31 32 33The currently preferred method is using the free Visual C++ Toolkit 2008 34|msvc-2008-express|, the produced binary runs on most MS-Windows systems. If 35you need the executable to run on Windows 98 or ME, use the 2003 one 36|msvc-2003-toolkit|. 37 38 391. Microsoft Visual C++ 40======================= 41 42Visual Studio 43------------- 44 45Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, and VS 2008) 46is straightforward. (These instructions should also work for VS 4 and VS 5.) 47 48Using VS C++ 2008 Express is recommended, the binaries build with that run on 49nearly all platforms. Binaries from later versions may not run on Windows 95 50or XP. 51 52To build Vim from the command line with MSVC, use Make_mvc.mak. 53Visual Studio installed a batch file called vcvars32.bat, which you must 54run to set up paths for nmake and MSVC. 55 56nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++ 57nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++ 58nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++ 59nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc. 60 Perl, Python, etc. 61 62Make_mvc.mak allows a Vim to be built with various different features and 63debug support. Debugging with MS Devstudio is provided by Make_dvc.mak. 64For a description of the use of Make_dvc.mak, look in Make_mvc.mak. 65 66For compiling Gvim with IME support on far-east Windows, add IME=yes 67to the parameters you pass to Make_mvc.mak. 68 69To build Vim from within the Visual Studio IDE, open the Make_ivc.mak project. 70(Note: Make_ivc.mak is not as rich as Make_mvc.mak, which allows for 71far more configuration.) Make_ivc.mak can also be built with nmake. 72 73nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim" 74 GUI Microsoft Visual C++ 4.x or later 75nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE" 76 OLE Microsoft Visual C++ 4.x or later 77 78See the specific files for comments and options. 79 80These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and 81Ron Aaron; they have been tested. 82 83 84Visual C++ Toolkit 2003 *msvc-2003-toolkit* 85----------------------- 86 87You could download the Microsoft Visual C++ Toolkit 2003 from 88 http://msdn.microsoft.com/visualc/vctoolkit2003/ 89Unfortunately this URL is no longer valid. Inofficial downloads appear to be 90available from links mentioned on these pages (use at your own risk): 91 http://www.filewatcher.com/m/VCToolkitSetup.exe.32952488.0.0.html 92 http://feargame.net/wiki/index.php?title=Building_Source_with_the_VC2003_Toolkit 93 94This contains the command-line tools (compiler, linker, CRT headers, 95and libraries) for Visual Studio .NET 2003, but not the Visual Studio IDE. 96To compile and debug Vim with the VC2003 Toolkit, you will also need 97|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|, 98and |windbg-download|. 99 100It's easier to download Visual C++ 2008 Express Edition, |msvc-2008-express|, 101which is freely available in perpetuity. 102 103The free Code::Blocks IDE works with the VC2003 Toolkit, as described at 104 http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE 105(This site also takes you through configuring a number of other 106free C compilers for Win32.) 107 108To compile Vim using the VC2003 Toolkit and Make_mvc.mak, you must first 109execute the following commands in a cmd.exe window (the msvcsetup.bat batch 110file can be used): 111 112 set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH% 113 call "%VCToolkitInstallDir%vcvars32.bat" 114 set MSVCVer=7.1 115 call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd" 116 set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB% 117 118Now you can build Vim with Make_mvc.mak. 119 120 121Getting the Windows Platform SDK *ms-platform-sdk* 122 123You will also need a copy of the Windows Platform SDK from 124 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 125Specifically, you need the Windows Core SDK subset of the Platform SDK, 126which contains the Windows headers and libraries. 127 128 129Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist* 130 131You need the .NET Framework 1.1 Redistributable Package from 132 http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3 133or from Windows Update: 134 http://windowsupdate.microsoft.com/ 135This is needed to install |dotnet-1.1-sdk|. It also contains cvtres.exe, 136which is needed to link Vim. 137 138 139Getting the .NET Framework 1.1 SDK *dotnet-1.1-sdk* 140 141You need the .NET Framework 1.1 SDK from 142 http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d 143This contains some additional libraries needed to compile Vim, 144such as msvcrt.lib. You must install |dotnet-1.1-redist| before 145installing the .NET 1.1 SDK. 146 147 148Getting the WinDbg debugger *windbg-download* 149 150The Debugging Tools for Windows can be downloaded from 151 http://www.microsoft.com/whdc/devtools/debugging/default.mspx 152This includes the WinDbg debugger, which you will want if you ever need 153to debug Vim itself. An earlier version of the Debugging Tools 154is also available through the Platform SDK, |ms-platform-sdk|. 155 156 157Visual C++ 2005 Express Edition *msvc-2005-express* 158------------------------------- 159 160Visual C++ 2005 Express Edition can be downloaded for free from: 161 http://msdn.microsoft.com/vstudio/express/visualC/default.aspx 162This includes the IDE and the debugger. You will also need 163|ms-platform-sdk|. You can build Vim with Make_mvc.mak. 164 165Instructions for integrating the Platform SDK into VC Express: 166 http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx 167 168 169Visual C++ 2008 Express Edition *msvc-2008-express* 170------------------------------- 171 172Visual C++ 2008 Express Edition can be downloaded for free from: 173 http://www.microsoft.com/express/downloads/ 174This includes the IDE and the debugger. 175 176To set the environment execute the msvc2008.bat script. You can then build 177Vim with Make_mvc.mak. 178 179For building 64 bit binaries you also need to install the SDK: 180"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1" 181You don't need the examples and documentation. 182 183 184Visual C++ 2010 Express Edition *msvc-2010-express* 185------------------------------- 186 187Visual C++ 2010 Express Edition can be downloaded for free from: 188 http://www.microsoft.com/express/vc/Default.aspx 189This includes the IDE and the debugger. 190 191To set the environment execute the msvc2010.bat script. You can then build 192Vim with Make_mvc.mak. 193 194 195Targeting Windows XP with new MSVC *new-msvc-windows-xp* 196---------------------------------- 197 198Beginning with Visual C++ 2010, Microsoft changed the behavior of LINK.EXE 199so that it targets Windows 6.0 (Vista) by default. In order to override 200this, the target Windows version number needs to be passed to LINK like 201follows: 202 LINK ... /subsystem:console,5.01 203 204Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version. 205Use lines like follows to target Windows XP (assuming using Visual C++ 2012 206under 64-bit Windows): 207 set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A 208 set SDK_INCLUDE_DIR=%WinSdk71%\Include 209 set INCLUDE=%WinSdk71%\Include;%INCLUDE% 210 set LIB=%WinSdk71%\Lib;%LIB% 211 set PATH=%WinSdk71%\Bin;%PATH% 212 set CL=/D_USING_V110_SDK71_ 213 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01 214 215The following Visual C++ team blog can serve as a reference page: 216 http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx 217 218 2192. MinGW 220======== 221 222(written by Ron Aaron: <[email protected]>) 223 224This is about how to produce a Win32 binary of gvim with MinGW. 225 226First, you need to get the 'mingw32' compiler, which is free for the download 227at: 228 229 http://www.mingw.org/ 230 231or you can use 'MinGW-w64' compiler. 232 233 http://mingw-w64.sourceforge.net/ 234 235Once you have downloaded the compiler binaries, unpack them on your hard disk 236somewhere, and put them on your PATH. If you are on Win95/98 you can edit 237your AUTOEXEC.BAT file with a line like: 238 239 set PATH=C:\MinGW\bin;%PATH% 240 241or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance), 242System, Advanced, and edit the environment from there. 243 244Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window: 245 246 C:\> gcc --version 247 gcc (GCC) 4.8.1 248 249 C:\> mingw32-make --version 250 GNU Make 3.82.90 (...etc...) 251 252Now you are ready to rock 'n' roll. Unpack the vim sources (look on 253www.vim.org for exactly which version of the vim files you need). 254 255Change directory to 'vim\src': 256 257 C:\> cd vim\src 258 C:\VIM\SRC> 259 260and you type: 261 262 mingw32-make -f Make_ming.mak gvim.exe 263 264After churning for a while, you will end up with 'gvim.exe' in the 'vim\src' 265directory. 266 267You should not need to do *any* editing of any files to get vim compiled this 268way. If, for some reason, you want the console-mode-only version of vim (this 269is NOT recommended on Win32, especially on '95/'98!!!), you can use: 270 271 mingw32-make -f Make_ming.mak GUI=no vim.exe 272 273If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX' 274(also free!) and compress the file (typical compression is 50%). UPX can be 275found at 276 http://www.upx.org/ 277 278As of 2011, UPX still does not support compressing 64-bit EXE's; if you have 279built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found 280at: 281 http://www.matcode.com/mpress.htm 282 283 284ADDITION: NLS support with MinGW 285 286(by Eduardo F. Amatria <[email protected]>) 287 288If you want National Language Support, read the file src/po/README_mingw.txt. 289You need to uncomment lines in Make_ming.mak to have NLS defined. 290 291 2923. Cygwin 293========= 294 295Use Make_cyg.mak with Cygwin's GCC. See 296 http://users.skynet.be/antoine.mechelynck/vim/compile.htm 297 298With Cygnus gcc you should use the Unix Makefile instead (you need to get the 299Unix archive then). Then you get a Cygwin application (feels like Vim is 300running on Unix), while with Make_cyg.mak you get a Windows application (like 301with the other makefiles). 302 303 3044. Borland 305=========== 306 307Use Make_bc5.mak with Borland C++ 5.x. See 308 http://users.skynet.be/antoine.mechelynck/vim/compile.htm 309 310 3115. Cross compiling for Win32 from a Linux machine 312================================================= 313 314[Update of 1) needs to be verified] 315 316If you like, you can compile the 'mingw' Win32 version from the comfort of 317your Linux (or other unix) box. To do this, you need to follow a few steps: 318 1) Install the mingw32 cross-compiler. See 319 http://www.mingw.org/wiki/LinuxCrossMinGW 320 http://www.libsdl.org/extras/win32/cross/README.txt 321 2) Get and unpack both the Unix sources and the extra archive 322 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'. 323 Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you 324 wish. If your cross-compiler prefix differs from the predefined value, 325 set 'CROSS_COMPILE' corresponding. 326 4) make -f Make_ming.mak gvim.exe 327 328Now you have created the Windows binary from your Linux box! Have fun... 329 330 3316. Building with Python support 332=============================== 333 334For building with MSVC 2008 the "Windows Installer" from www.python.org 335works fine. 336 337(rest written by Ron Aaron: <[email protected]>) 338 339Building with the mingw32 compiler, and the ActiveState ActivePython: 340 http://www.ActiveState.com/Products/ActivePython/ 341 342After installing the ActivePython, you will have to create a 'mingw32' 343'libpython20.a' to link with: 344 cd $PYTHON/libs 345 pexports python20.dll > python20.def 346 dlltool -d python20.def -l libpython20.a 347 348Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to 349the root of the Python installation (C:\Python20, for example). If you are 350cross-compiling on Linux with the mingw32 setup, you need to also convert all 351the 'Include' files to *unix* line-endings. This bash command will do it 352easily: 353 for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil 354 355Now just do: 356 make -f Make_ming.mak gvim.exe 357 358and you will end up with a Python-enabled, Win32 version. Enjoy! 359 360 3617. Building with MzScheme support 362================================= 363 364(written by Sergey Khorev <[email protected]>) 365 366Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can 367be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and 368above (including 299 and 30x series). 369 370The MSVC build is quite straightforward. Simply invoke (in one line) 371nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme> 372 [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>] 373where <MzScheme-version> is the last seven characters from MzScheme dll name 374(libmzschXXXXXXX.dll). 375If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme 376DLL's, but will load them in runtime on demand. 377 378Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into 379account that <Path-to-MzScheme> should contain slashes rather than backslashes 380(e.g. d:/Develop/MzScheme) 381 382"Static" MzScheme support (Vim executable will depend on MzScheme DLLs 383explicitly) on MinGW and Cygwin requires additional step. 384 385libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from 386%WINDOWS%\System32 to other location (either build directory, some temporary 387dir or even MzScheme home). 388 389Pass that path as MZSCHEME_DLLS parameter for Make. E.g., 390make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000 391 MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no 392 393After a successful build, these dlls can be freely removed, leaving them in 394%WINDOWS%\System32 only. 395 396 3978. Windows 3.1x 398=============== 399 400make -f Make_w16.mak 16 bit, Borland C++ 5.0 401 402Warning: Be sure to use the right make.exe. It should be Borland make. 403 404You will almost certainly have to change the paths for libs and include files 405in the Makefile. Look for "D:\BC5" and "ctl3dv2". You will get a number of 406warnings which can be ignored ( _chmod, precompiled header files, and 407"possibly incorrect assignment"). 408 409The makefile should also work for BC++ 4.0 and 4.5, but may need tweaking to 410remove unsupported compiler & liker options. 411 412For making the Win32s version, you need Microsoft Visual C++ 4.1 OR EARLIER. 413In MSVC 4.2 support for Win32s was dropped! Use this command: 414 nmake -f Make_mvc.mak GUI=yes 415 416 4179. MS-DOS 418========= 419 420Summary: 421ren Make_bc3.mak Makefile; make 16 bit, Borland C++ and Turbo C++ 422ren Make_tcc.mak Makefile; make 16 bit, Turbo C 423make -f Make_djg.mak 32 bit, DJGPP 2.0 424make -f Make_bc5.mak 32 bit, Borland C++ 5.x (edit it to 425 define DOS) 426 427Warning: Be sure to use the right make.exe. Microsoft C make doesn't work; 428Borland make only works with Make_bc3.mak, Make_bc5.mak and Make_tcc.mak; 429DJGPP/GNU make must be used for Make_djg.mak. 430 431The Borland C++ compiler has been used to generate the MS-DOS executable; it 432should work without problems. You will probably have to change the paths for 433LIBPATH and INCLUDEPATH in the start of the Makefile. You will get two 434warnings which can be ignored (one about _chmod and one about precompiled 435header files). 436 437The "spawno" library by Ralf Brown was used in order to free memory when Vim 438starts a shell or other external command. Only about 200 bytes are taken from 439conventional memory. When recompiling get the spawno library from Simtel, 440directory "msdos/c". It is called something like "spwno413.zip". Or follow 441the instructions in the Makefile to remove the library. 442 443The Turbo C Makefile has not been tested much lately. It is included for those 444that don't have C++. You may need to make a few changes to get it to work. 445 446DJGPP needs to be installed properly to compile Vim; you need a lot of things 447before it works. When your setup is OK, Vim should compile with just one 448warning (about an argument to signal()). 449 450Make_bc5.mak is for those that have Borland C++ 5.0 or later. At the top of 451the file, there are some variables you can change to make either a 32-bit 452Windows exe (GUI or console mode), or a 16-bit MS-DOS version. 453NOTE: multi-byte support is broken in the Borland libraries, not everything 454will work properly! Esp. handling multi-byte file names. 455 456If you get all kinds of strange error messages when compiling, try changing 457the file format from "unix" to "dos". 458 459 46010. Installing after building from sources 461========================================== 462 463[provided by Michael Soyka] 464 465After you've built the Vim binaries as described above, you're ready to 466install Vim on your system. However, if you've obtained the Vim sources 467using Mercurial or by downloading them as a unix tar file, you must first 468create a "vim73" directory. If you instead downloaded the sources as 469zip files, you can skip this setup as the zip archives already have the 470correct directory structure. 471 472 A. Create a Vim "runtime" subdirectory named "vim73" 473 ----------------------------------------------------- 474 If you obtained your Vim sources as zip files, you can skip this step. 475 Otherwise, continue reading. 476 477 Go to the directory that contains the Vim "src" and "runtime" 478 directories and create a new subdirectory named "vim73". 479 480 Copy the "runtime" files into "vim73": 481 copy runtime\* vim73 482 483 B. Copy the new binaries into the "vim73" directory 484 ---------------------------------------------------- 485 Regardless of how you installed the Vim sources, you need to copy the 486 new binaries you created above into "vim73": 487 488 copy src\*.exe vim73 489 copy src\GvimExt\gvimext.dll vim73 490 copy src\xxd\xxd.exe vim73 491 492 C. Move the "vim73" directory into the Vim installation subdirectory 493 --------------------------------------------------------------------- 494 Move the "vim73" subdirectory into the subdirectory where you want Vim 495 to be installed. Typically, this subdirectory will be named "vim". 496 If you already have a "vim73" subdirectory in "vim", delete it first 497 by running its uninstal.exe program. 498 499 D. Install Vim 500 --------------- 501 "cd" to your Vim installation subdirectory "vim\vim73" and run the 502 "install.exe" program. It will ask you a number of questions about 503 how you would like to have your Vim setup. Among these are: 504 - You can tell it to write a "_vimrc" file with your preferences in the 505 parent directory. 506 - It can also install an "Edit with Vim" entry in the Windows Explorer 507 popup menu. 508 - You can have it create batch files, so that you can run Vim from the 509 console or in a shell. You can select one of the directories in your 510 PATH or add the directory to PATH using the Windows Control Panel. 511 - Create entries for Vim on the desktop and in the Start menu. 512 513Happy Vimming! 514