Run a command window with your development environment loaded. On a new vista box with Visual Studio 2008 Express, this
is available at
{{{
Start ->
All Programs ->
Visual Studio 2008 Express Edition ->
Visual Studio Tools ->
Visual Studio 2008 Command Prompt
}}}
Choose an empty directory to work in. I choose one where the path mirrors the path to
the code in the svn repository:
{{{
c:\boost\branches\CMake\release>dir
Volume in drive C is OS
Volume Serial Number is 6AC1-32E0
Directory of c:\boost\branches\CMake\release
06/16/2008 07:22 PM
.
06/16/2008 07:22 PM ..
0 File(s) 0 bytes
2 Dir(s) 48,047,624,192 bytes free
}}}
Check that your pysvn and win32api python packages are installed correctly. These
commands should just return without output:
{{{
c:\boost\branches\CMake\release>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysvn
>>> import win32api
>>> exit()
}}}
Verify that nmake is in your path:
{{{
c:\boost\branches\CMake\release>nmake
Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.
}}}
Check out the cmake release branch to directory `src` (wrapping and indentation
on commandline are mine, for clarity:
{{{
c:\boost\branches\CMake\release>svn co
https://svn.boost.org/svn/boost/branches/CMake/release
src
A src\regression
A src\configure
A src\status
A src\status\explicit-failures-markup.xml
A src\status\explicit-failures.xsd
A src\status\Jamfile.v2
A src\people
...
A src\libs\filesystem\include\boost\filesystem\fstream.hpp
A src\libs\filesystem\include\boost\filesystem\operations.hpp
A src\libs\filesystem\include\boost\filesystem\config.hpp
Checked out external at revision 46437.
Checked out revision 46437.
}}}
Create a directory `build` at the same level as `src` and cd in there:
{{{
c:\boost\branches\CMake\release>mkdir build
c:\boost\branches\CMake\release>cd build
}}}
Now do the initial cmake configuration. The options are as follows:
`BOOST_BUILD_SLAVE`
Enable build slave mode
`BUILD_TESTING`
Turn on testing of libraries
`-G"NMake Makefiles"`
Generate nmake makefiles, not visual studio project files
`CMAKE_MAKE_PROGRAM`
Specify `nmake` as the make program
It looks like this (the wrapping and indentation on the commandline are mine,
for clarity):
{{{
c:\boost\branches\CMake\release\build>cmake -DBOOST_BUILD_SLAVE=ON
-DBUILD_TESTING=ON
-G"NMake Makefiles"
-DCMAKE_MAKE_PROGRAM:FILEPATH=nmake
../src
-- The C compiler identification is MSVC
-- The CXX compiler identification is MSVC
-- Check for CL compiler version
-- Check for CL compiler version - 1500
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - no
-- Check CL platform
-- Check CL platform - 32 bit
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC
/bin/cl.exe
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio 9.0/VC
/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/
VC/bin/cl.exe
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio 9.0/
VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PythonInterp: C:/Program Files/Python25/python.exe
-- found python executable C:/Program Files/Python25/python.exe
-- Found PythonLibs: C:/Program Files/Python25/libs/python25.lib
-- found python includes C:/Program Files/Python25/include
-- found python libs C:/Program Files/Python25/libs/python25.lib
-- Configuring test/compile drivers
-- Looking for doxygen...
-- Looking for doxygen... - NOT found
-- Looking for dot tool...
-- Looking for dot tool... - NOT found
-- + algorithm
-- + any
-- + array
-- + assign
-- + bind
-- + circular_buffer
-- + concept_check
-- + config
-- Performing Test tmp
-- Performing Test tmp - Failed
-- + conversion
-- + crc
-- + date_time
-- + disjoint_sets
-- + dynamic_bitset
-- + system
-- + filesystem
-- + foreach
-- + format
-- + function
-- + function_types
-- + functional
-- + gil
-- + graph
-- Could NOT find EXPAT
-- + integer
-- + io
-- + iostreams
-- + iterator
-- + lambda
-- + logic
-- + math
-- + serialization
-- + mpi
-- + mpl
-- + multi_array
-- + multi_index
-- + numeric
-- + optional
-- + parameter
-- + pool
-- + preprocessor
-- + program_options
-- + property_map
-- + ptr_container
-- + python
-- + quickbook
-- + random
-- + range
-- + rational
-- + regex
-- + signals
-- + smart_ptr
-- + spirit
-- + statechart
-- + static_assert
-- + test
-- + thread
-- + timer
-- + tokenizer
-- + tr1
-- libs/tr1/test/CMakeLists.txt: was this just cruft? Seems to duplicate first
glob_test_compile line above
-- + tuple
-- + type_traits
-- + typeof
-- + utility
-- + variant
-- + wave
-- + xpressive
-- Configuring done
-- Generating done
-- Build files have been written to: C:/boost/branches/CMake/release/build
}}}
Create a file `slave-description.txt` and put in some descriptive text
explaining anything peculiar about the slave's configuration, the
site/location, etc.
{{{
c:\boost\branches\CMake\release\build>notepad slave-description.txt
}}}
There are two last things to configure. Do so via `nmake edit_cache`:
{{{
c:\boost\branches\CMake\release\build>nmake edit_cache
Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Running CMake cache editor...
}}}
A gui cmake cache editor will pop up:
[[Image(nmake_edit_cache.JPG)]]
Set the highlighted fields (BOOST_BUILD_SLAVE_CONTACT_INFO and BOOST_BUILD_SLAVE_HOSTNAME. Highlighting
is mine.)
appropriately and press "OK" to generate makefiles and exit.
Now notify the server that a slave build is about to start:
{{{
c:\boost\branches\CMake\release\build>nmake slave-start
Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Slave starting build
Url: https://svn.boost.org/svn/boost/branches/CMake/release at rev 46437
FQDN: vista.dc.resophonic.com
Uname: ('Microsoft', 'EvanXPS', 'Windows', '6.0.6000', '', '')
Toolset: vc90
Notifying http://boost:boost@boost.resophonic.com/trac/login/xmlrpc of new build
via XML-RPC
Setting new build id 33 locally
Built target slave-start
}}}
At this point you can check http://boost.resophonic.com/trac/traash and see
that your build-in-progress is at the bottom of the list.
Now do the build:
{{{
c:\boost\branches\CMake\release\build>nmake /I test
Microsoft (R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Scanning dependencies of target Algorithm-conv_test
[ 0%] Building CXX object libs/algorithm/Algorithm-test/CMakeFiles/Algorithm-co
nv_test.dir/conv_test.cpp.obj
***
*** Executing op:cxx_compile_object
*** ['C:\\PROGRA~1\\MICROS~1.0\\VC\\bin\\cl.exe', '@C:\\Users\\Evan\\AppData\\Lo
cal\\Temp\\nm96EF.tmp']
*** log=C:\boost\branches\CMake\release\build\libs\algorithm\Algorithm-test\Log.
marshal
***
Linking CXX executable ..\..\..\bin\tests\Algorithm\conv_test.exe
***
*** Executing op:link_executable
*** ['C:\\Program Files\\CMake 2.6\\bin\\cmake.exe', '-E', 'vs_link_exe', 'C:\\P
ROGRA~1\\MICROS~1.0\\VC\\bin\\cl.exe', '/nologo', '@CMakeFiles\\Algorithm-conv_t
est.dir\\objects.rsp', '@C:\\Users\\Evan\\AppData\\Local\\Temp\\nmABD7.tmp']
*** log=C:\boost\branches\CMake\release\build\libs\algorithm\Algorithm-test\Log.
marshal
***
[ 0%] Built target Algorithm-conv_test
Scanning dependencies of target Algorithm-conv_test-run
Running conv_test in project Algorithm
***
*** Executing op:run
*** ['C:/boost/branches/CMake/release/build/bin/./tests/Algorithm/conv_test']
*** log=C:/boost/branches/CMake/release/build/libs/algorithm/Algorithm-test\Log.
marshal
***
[ 0%] Built target Algorithm-conv_test-run
}}}
When it finishes, notify the server that the run is done with
{{{
c:\boost\branches\CMake\release\build>nmake slave-finish
}}}