{section: Introduction } This wiki page contains information regarding build modernization and consolidation using CMake. For details on progress see Ticket #779 #1248 {section: Getting Started } 1.) You will need to obtain CMake 2.8 or > for the target platform you are working on. http://www.cmake.org/cmake/resources/software.html 2.) Checkout origin/V7_5-cmake-stage-publicbranch, for windows you will need git 1.6.4 or greater. 3.) run nmi_tools/glue/SubmitInfo.pm to find the platform-specific args (Configure Args) to pass to cmake. 4.) cmake [configure args] ./CMakeLists.txt (or run cmake-gui (*NOTE* - will default to PROPER build on *nix) You may want to make the above cmake command with configure args an alias. 5.) Now you can run make or open the visual studio solution file. *Windows Only:* Prior to building for the 1st time there are some prerequisites that you will need to perform 6.) Install the lastest platform SDK and reopen the solution *:http://msdn.microsoft.com/en-us/windows/dd146047.aspx *:Currently it is http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&displaylang=en 7.) Download and install WiX 3.0 on your windows machine *:http://wix.codeplex.com/ 8.) Download and install 7-zip (you will need to add it to your PATH) *:http://www.7-zip.org/download.html 9.) Patch your version of cmake/cpack to enable wix support by dropping the following into your cmake path. You may want to verify with a diff tool such as beyond compare when updating. *:https://docs.google.com/leaf?id=0Bzq0eFfVveNqZTgxNjQyZmItNmEyNy00MWZlLTg2NTktMzJiYjljMDc3NTQ0&sort=name&layout=list&num=50 10.) Open Tools->Options under "Projects and Solutions" click on VC++ Directories and add the following to the *Executable* directories *:$(SolutionDir)\msconfig *:Move $(PATH) to the bottom as sometimes C:\cygwin\bin is in the $(PATH) which can cause issues with condor's bundled binaries. 11.) Open and build. {section: Contributing} All of the updated cmake files exist under src directories and are open to contribution. The current branch tracks against master(7.5 series). *Conventions* *: #include /header.h (stage 2) *: Compiles fully in C++ (stage 1) *: Proper use of extern (stage 1) *: Minimal linkage, explicitly specify (stage 1) *: Platform specific files are suffixed as to allow glob macros to add to target (.windows, .unix) (stage 1) *: condor specific macros are located under build/cmake (stage 1) {section: Installing} So a big departure from before is the elimination of release_dir and the addition of ye-olde install target with a prefix. For my testing I have all of my paths and what not set against a softlink which allows me to shift amongst multiple versions of condor. Then I run cmake appending a prefix location: {code} cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/condor/x.y.z ... {endcode} This allows me to test any version of condor and maintain those binaries for posterity. {section: Testing} The code has been restructured so *all* things test related are bundled under a single target, and all binaries relating to that target set their output to condor_tests. {code} make tests {endcode} Once built you can run all the batch tests as before. {section: Packaging} CMake's compliment, CPack, supports a large number of packaging types which can be found {link: http://www.cmake.org/Wiki/CMake:CPackPackageGenerators here}, and it is currently in its infancy in the code base. There are two targets which are created when you include(CPack): {code} make package make package_source {endcode} {section: TODO} see Ticket #779 #1248 {section: Windows Gotchas} {subsection: 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= {linebreak}If you see the lines: {code} @SET FrameworkDir=Framework32 @SET FrameworkVersion=v2.0.50727 {endcode} change them to: {code} @SET FrameworkDir=C:\Windows\Microsoft.NET\Framework @SET FrameworkVersion=v2.0.50727 @SET Framework35Version=v3.5 {endcode} 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: {code} %FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 (Pre-Release Version); {endcode} change it to point to the correct version like: {code} %FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 SP1; {endcode} {subsection: 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: {code} CMD \V:ON \E:ON {endcode} {section: Links} {link: http://www.cmake.org/cmake/help/documentation.html CMake Official Documentation} {link: http://www.google.com/codesearch Google Code Search for open source examples}