12. Why CMake?
• Process
• Fast
• Easy to implement
• Easy to use
• Easy to use across platform
• Easy to have multi configuration
• Easy to have clean code
• Easy to convert any project to CMake
• Everyone Uses It
• Etc
15. Fast
• Implement on C++
• http://blog.qgis.org/?q=node/16 “I was quite surprised with
the speed of building Quantum GIS codebase in comparison to
Autotools”
Task CMake Autotools
Automake 00:41
Configure 0:08
Configure 00:20
Make 12:15 21:16
Install 0:20 0:36
Total 12:43 22:43
21. Easy to use multi configuration
• Build Configuration
• Debug
• Release
• RelWithDebInfo
• MinSizeRel
• etc
• CMake build parameteres
-DVERSION=1.1.1
• CMake build init file with sated variables
cmake -Cinitfile.cmake
22. CMake Init File
set (CPACK_PACKAGE_VERSION_MAJOR 5)
set (CPACK_PACKAGE_VERSION_MINOR 7)
set (CPACK_PACKAGE_VERSION_PATCH 1)
set (CPACK_RESOURCE_FILE_LICENSE Copyright.txt")
set (CPACK_RESOURCE_FILE_README "Description.txt")
set (CPACK_RESOURCE_FILE_WELCOME "Welcome.txt")
23. Easy to have clean code
• Out-of-source build trees leave source clean
Just call cmake command with parameter –B“../build”
Sample:
cmake “./src” –B”build” –G”NMake Makefiles” –demover.cmake
-DEXECUTABLE_OUTPUT_PATH /tmp/bin_result
50. CTest
set (PROJECT_NAME "MyProject")
set (CTEST_DROP_METHOD "http")
set (CTEST_DROP_SITE "my.cdash.org")
set (CTEST_DROP_LOCATION "/submit.php?project=VALG1")
set (CTEST_DROP_SITE_CDASH TRUE)
set (CTEST_SITE "MyPCName")
set (CTEST_BUILD_NAME "Windows")
set (CTEST_SOURCE_DIRECTORY "${ROOT_DIRECTORY }/src")
set (CTEST_BINARY_DIRECTORY ${ROOT_DIRECTORY}/build")
set (CTEST_BUILD_CONFIGURATION Debug)
61. CPack
• Setting variables
set (CPACK_PACKAGE_VERSION_MAJOR 5)
set (CPACK_PACKAGE_VERSION_MINOR 7)
set (CPACK_PACKAGE_VERSION_PATCH 1)
set (CPACK_RESOURCE_FILE_LICENSE Copyright.txt")
set (CPACK_RESOURCE_FILE_README "Description.txt")
set (CPACK_RESOURCE_FILE_WELCOME "Welcome.txt")
• Choose generator
set(CPACK_GENERATOR TGZ)
set(CPACK_GENERATOR NSIS)
• Include CPack
include(CPack)