Changes in CMake 2.6.0
- Fix links in generated documentation
- Fix for FindQt and some mac frameworks
- Fix for ctest to report more than 2 gigs system memory on windows
- Fix CTest build name for vs 9, and fix memory size on windows
Changes in CMake 2.6.0 RC 10
- Do not duplicate .so libraries on the link line
- Add more system library paths to sun builds
- Add BETA support for Intel Fortran IDE files in visual studio
- Fix FindCurses to work if ncurses is the only option
- Fix shell escapes on some systems
- Remove check for file write as input to cmake, as it is no longer needed
- Make check_type_size automatically check for headers that it uses
- Remove minimum required from FindBoost.cmake
- Fix FindSDL so that it can be run more than once
- Fix find required for VTK package
- Allow for CMAKE_OSX_SYSROOT to work with single architecture
- Add context information when a source file cannot be found.
- Report the directory-level context even if no list file 
  is currently being processed.

Changes in CMake 2.6.0 RC 9

- Fix for fortran mod:: support 
- Fix bug in install command with BUNDLE DESTINATION
- Make mac install symlinks check for errors
- Fix for CMP0007, to not warn about empty lists
- Preserve static libraries when linked multiple times 
- Use c compiler path to find asm compiler
- Allow RC compiler to not get all COMPILE_FLAGS
- Complete overhaul for FindBoost.cmake
- Minor fixes for FindMPI.cmake
- Fix for list command and empty list elements CMP0007
- Fix for VS6 and sub-groups
- Fix bug 6440, and make sure _INIT flags do not overright cache values
- Do not report CMP0003 for anything other than -l
- Fix crash in fortran depend scanning, bug 6855
- Fix timeout values for cmake's own tests
- Better message in compiler ABI detect
- Fixes for cpack x11 packages on leopard
- Changes to cpack options names 
- Fixes for FindMPI on 64 bit MS MPI
- Fix for -isystem for wxWidgets
- Some fixes for chrpath during installation
- Fix compatibility with CMake 2.4 for installation of MACOSX_BUNDLE (CMP0006)
- Do not use debug postfix when building frameworks on the Mac
- Fix exception handling off/on issue with visual studio IDE generators
- Fix <OBJECT_DIR> to be native path style 
- Fix leak in cpack
- Some Qt GUI style changes

Changes in CMake 2.6.0 RC 8

- Fix sun make very poor performance
- Fix includes for automoc in FindQt4

Changes in CMake 2.6.0 RC 7

- Fix for chrpath on sun with gcc
- Fix FindJNI on unix with HKEY issue bug 6688
- Change install location on mac for cmake-gui
- Fix for bugs 6730 and 6720 in FindQt4 configured headers in binary dir
- Add VS9 support to InstallRequiredSystemLibraries.cmake
- Fix some bugs in framework support
- Have make edit_cache work with cmake-gui and eclipse generator
- Fix find_* to not mistakenly construct network paths on windows
- Several bug fixes in cmake-gui Qt program.

Changes in CMake 2.6.0 RC 6

- Added ChangeLog.manual
- Allow CMakeImportBuildSettings force compiler to be optional
- Change cpack deb packager to detect the architecture
- Fix FindCurses to be backwards compatible with cache variable CURSES_LIBRARY
- Add version variables to FindQt4.cmake
- Fix CPack Deb generator to not hard code /usr
- Better default size for cmake-gui help dialog
- Fix problem where incorrect path was used for cmake.exe when 
  used to do incremental linking on windows nmake or make
- Fix build with system libraries on
- Add color output in kdevelop
- Create non-verbose makefiles in kdevelop
- Fix some missing flags for vs IDE flag map
- Fix MacOSX install symlink crash problem
- Fix turning of Dev warnings with gui's
- Fix backwards compatibility issue with FindMPI.cmake
- Fix for bug 6605, add -L path for optimized in debug sometimes for
  backwards compatibility
- Allow for CMP0000 to be set before any warnings happen
- Do not use FAT32 hack in VS 2005 and 2008 unless on a FAT32 disk,
  causes try-compiles to be 3 times slower if FAT hack is present.
- Fixes to debian cpack 
- Can now check if a proprty is SET or not
- Fix for generate with vs 2005 and vista not being able to create stamp file
- set_property with an empty value unsets that property now
- Fix FindQt4 on windows with some \ style paths

Changes in CMake 2.6.0 

- Documentation for all variables
- Automatic reload of projects in visual stuido 7 and greater
  when cmake is re-run.
- Direct CDash submit support
- Bullseye coverage support
- Use full paths for linking to libraries on all platforms. No longer
  separate into -L and -l.
- Enhance the install command
- export command and ability to have imported targets
- CPack support for rpm and deb
- Cross compile support
- New Qt GUI
- Introduction of the cmake_policy command
- Much better Fortran support
- Mac OSX Framework creation support
- Project generators for Eclipse and CodeBlocks
- Beta support for asm in makefiles
- Enhanced find_package() command with support for project-installed 
  FooConfig.cmake files
- New CMAKE_PREFIX_PATH environment variable to specify user search dirs 
  for find_xxx()
- Lots of bug fixes