For instructions on building HTCondor in releases prior to 7.5.5, see Building HTCondor prior to 7.5.5 on Windows.

For information about the conversion of the build process from project files to cmake see BuildModernization

Building HTCondor with cmake on Windows

Prerequisites

In order to build HTCondor on Windows, the following prerequisites are required. They need to be in the PATH before you can build. There is a batch file msconfig\set_build_env.bat in the HTCondor sources that will locate the installed prerequisites and set the PATH for you if you don't wish to add them to your global PATH.

  1. Cmake 2.8.3 or later, the Cmake\bin directory should be added your PATH.

  2. Install Visual Studio. Add it to your PATH.

  3. [Optional] Start Visual Studio and Open Tools->Options under "Projects and Solutions" click on VC++ Directories and add the following to the Executable directories. This is not needed if you use msconfig\set_build_env.bat to set the PATH before you build.
    • $(SolutionDir)\msconfig
    • Move $(PATH) to the bottom as sometimes C:\cygwin\bin is in the $(PATH) which can cause issues with HTCondor's bundled binaries.

  4. Install Active Perl. Add it to your PATH.

  5. Install the .NET 2.0 redistributable (Should only be necessary on Windows XP and earlier)

  6. [Optional] Install the Windows Platform SDK. (may depend on .NET 2.0). Any version of the Platform SDK should be fine. SDK 6.1 and 7.0 are both known to work. This is not required if you have Visual Studio 2008 professional.

  7. [Optional but Recommended] Install 7-zip. Add it to your PATH. 7-zip is not needed to build, but it is needed to make the HTCondor .ZIP file. You will not be able to build the PACKAGE target witout 7-zip.

  8. [Optional] install git and add it to your PATH, git is one way to get the HTCondor sources. It is not needed if you already have the sources.

  9. [Optional] Install WiX 3.0 on your windows machine (Depends on Visual Studio). WiX is not needed to build, but it is needed to create the MSI installer.

Building

1.) Open a windows commmand prompt

2.) Checkout origin/master from the git repository, or download the HTCondor Sources http://www.cs.wisc.edu/condor/downloads-v2/download.pl

3.) navigate to CONDOR_SRC

4.) add cmake\bin to your PATH if it is not already. One way to do this is to execute CONDOR_SRC\msconfig\set_build_env.bat. This will setup PATH, LIB, and INCLUDE environment variables to build HTCondor. If this batch file cannot find cmake.exe It will report an error.

5.) [Optional] If you want to use cached externals set the environment variable CONDOR_BLD_EXTERNAL_STAGE to the path of the externals cache. Using cached externals can save a lot of time if you plan to build HTCondor more than once. For example

set CONDOR_BLD_EXTERNAL_STAGE=c:\scratch\condor_externals

6.) The the cmake build supports both in-source and out-of-source builds. For in-source builds execute

cmake -G "Visual Studio 9 2008" .
for out-of-source builds, navigate to the build destination folder and execute cmake; passing it the path to the HTCondor sources. For example
// assuming that the current directory is CONDOR_SRC
set _condor_sources=%CD%
md c:\scratch\condor\build_dest
cd /d c:\scratch\condor\build_dest
cmake CMakeLists.txt -G "Visual Studio 9 2008" %_condor_sources%
This will create Visual Studio Project and Solution files to build HTCondor. Many options can be passed to cmake, see CondorCmakeBuildOptions for more information. You can also use the cmake-gui to set options.

6.) Once you have used cmake to build Condor.sln, you can build on the command line or interactively. The options are

devenv condor.sln /Rebuild RelWithDebInfo /project ALL_BUILD
or
msbuild condor.sln /t:ALL_BUILD /p:Configuration:RelWithDebugInfo
or open Condor.sln in Visual Studio and build interactively.

Building Tests

Build the tests target in the Condor.sln Solution File. Once built you can run all the batch tests as before.

Copying Build results to the release Directory

There is a cmake file that will copy the build products to the correct subdirectories of a HTCondor installation. This can be used to overwrite an existing HTCondor install, or to layout the HTCondor files in preparation for making the installer.

cmake -DCMAKE_INSTALL_PREFIX:PATH=c:\scratch\condor\release_dir -P cmake_install.cmake

Note: Building the INSTALL target in the Condor.sln solution file invokes this cmake file. It will copy build results to $(SolutionDir)\release_dir

Making the MSI installer

The WiX programs are used to create the MSI installer. Before you can create the MSI, you must copy build results to a release directory. See above.

To build the MSI, make sure that WiX is in your PATH, then navigate to the release dir and run etc\WiX\do_wix.bat passing the path to the release dir and the name of the output MSI file as arguments. For example, if your release dir is c:\scratch\condor\release_dir you would execute

cd c:\scratch\condor\release_dir
etc\WiX\do_wix.bat %CD% c:\scratch\condor\Condor-X.Y.Z-winnt-x86.msi

Gotchas

SDK corruption of VC setup

Installation of the new Microsoft SDK (6.1 aka Server 2008) can leave an existing VC 9.0 installation with a corrupted setup bat file. After installing the SDK, check the contents of C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat
If you see the lines:

@SET FrameworkDir=Framework32
@SET FrameworkVersion=v2.0.50727
change them to:
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET Framework35Version=v3.5

Also, a portion of the PATH variable may have an incorrect entry which can lead to problems in the CMD interpreter. If in the same file you see a PATH entry like:

%FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 (Pre-Release Version);
change it to point to the correct version like:
%FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 SP1;

Environment variable expansion

The new SetEnv.cmd shipped in the 6.1 SDK requires that both command extensions and environment variable expansion be turned on. Either use the "CMD Shell" shortcut installed with the Windows SDK or ensure that CMD is launch with the /V:ON and /E:ON parameters. For example:
CMD /V:ON /E:ON