This page provides a repository for information about building EPICS on Microsoft Windows. If there are any mistakes here, or you find any other information that ought to go on this page, please let me know.
In May 2010, Carsten Winkler (BESSY) posted a set of instructions to tech-talk for building Base R3.14.11 with Visual Studio 2010 Express on Windows XP. However that information may be older than the instructions on this page below.
There is a similar (older) page to this one at KEK which goes into more detail and shows some older compilers and different versions of Base.
Paul Gibbons recently posted instructions on using the Microsoft Windows Debugger (WinDbg) to trace bugs in Windows IOCs.
EPICS can be built on Windows using the MinGW version of GNU Make, either ActiveState Perl or Strawberry Perl, and your choice of MinGW GCC, Microsoft's Visual Studio C++ compiler (including the free Microsoft Visual Studio Express Editions). Alternatively it can be built using the Cygwin versions of GNUmake, Perl and GCC, which may be the simplest approach if you already have Cygwin, but the performance using Cygwin is not as good as with the Microsoft native runtime.
Download and install a C/C++ compiler:
We no longer support using the Cygwin tools for Microsoft API builds, use versions of Perl and GNUmake that directly support the Microsoft API instead. See below for Cygwin builds.
The Microsoft Visual Studio 2015 edition must have VC++ language support configured. Mark Rivers explained that his installation was missing the vcvars64.bat and vcvarsall.bat files which configure the command shell for the appropriate compiler:
I fixed this using Control Panel/Programs and Features/Microsoft Visual Studio 2015/Change and selected Modify. I then checked the box for Programming Languages/VC++. Once I did that then many more .bat files appeared, including Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat.
For a description on how to set up batch files and desktop shortcuts to start a Windows command shell for building these architectures, see this tech-talk message.
In addition to the compiler, you will also need the following free tools:
This also supports make -jn for parallel builds. Apparently it can hang if you don't limit the number of jobs though, so don't use make -j without a number, always run make -j8 or similar. The newer GNU Make version 4.2.1 is better than version 4.1 that I provided here before, it now doesn't hang quite so hard.
Note that GNU Make will not work properly if you install it into a directory that has parentheses () in its path, and it's possible that having spaces in the path might be a problem too. Don't install it anywhere under your C:\Program Files (x86)\ directory. I suggest creating a directory like C:\GNU\bin for these kinds of tools.
After extracting the EPICS Base source code, look in the base/startup directory for the win32.bat file which you can edit to help you set up the necessary path and environment variables for building base.
If you wish to cross-compile for a vxWorks target you will obviously need to have Wind River's Tornado or WorkBench software installed, and to edit the base/configure/os/CONFIG_SITE.Common.vxWorksCommon file.
Download and run the 32-bit Cygwin Installer (you can use the 64-bit Cygwin Installer but you will have to create your own configuration files for the cygwin-x86_64 target on older versions of Base). When installing Cygwin to use with GCC, you may set the "Default Text File Type" to be either Unix or DOS depending on whether you expect to use other Windows-specific tools with this installation or not.
Note: Some Cygwin versions may not successfully build some EPICS Base versions, although it may still be possible if you to configure Base to create a statically linked version.
You will need to select at least the following Cygwin packages for installation (plus their atomatic dependencies):
The installer will add extra packages on which the above depend automatically. In addition to the above, the following packages are useful to have:
After the packages have been installed, use the cygwin tar program to extract the EPICS Base sourcce code. If you didn't install the readline package edit the file configure/os/CONFIG_SITE.Common.cygwin-x86 and comment out the COMMANDLINE_LIBRARY setting. At this point the only thing you need to do to build Base is to open a Cygwin bash shell window, set EPICS_HOST_ARCH and run make in the top level directory of Base:
$ export EPICS_HOST_ARCH=cygwin-x86 $ cd epics/base $ make ...