CMake Talk Summary: ------------------- Introudction: CMake - cross platform make. - configure the software build process and generate makefiles (or IDE project files) automatically on many systems. - Advantages over GNU Autotools. - Smaller archive files and downloads (no huge "configure", "configure.in"/"configure.ac", Makefile.am, Makefile.in, etc.) - Faster configurations (using the CMake command). - no excessive forking and running processes in CMake. - make/build runs faster (due to no "libtool" commands). - much easier to maintain and tends to break less than Autoconf's m4 macros generating /bin/sh code, with many other tools in between. Show: - http://www.seul.org/docs/autotut/figure1.png - Better Microsoft Windows support: - can prepare Windows NSIS packages out-of-the-box. - Its licence is mod-BSDL instead of Autotools' GPL. Core language: - A Specialised Domain-Specific Language (DSL) with an interpreter written in C++ - Turing Complete (i.e. you can write complete programs with it). - Supports Lists. - separated by ";". - $VAR expands lists. - "$VAR" expands a string into a single variable. - Use it when it doubt. - Sometimes variables are accessed by name and sometimes by their value. - read the documentation to be sure. - identifiers are case-insensitive. Hello world: - examples/ - http://www.cmake.org/cmake/help/examples.html The core language: - SET - IF - WHILE - FOREACH - MACRO - FUNCTION - FILE - INCLUDE - MESSAGE - useful for debugging - Utility functions: - LIST - MATH - STRING Building targets: - add_library - add_executable - add_custom_target - add_custom_command Checks for features and libraries: - pkg_check_modules - uses pkg_config. - configuration options: - SET (MAX_NUM_FREECELLS 8 CACHE STRING "Maximal Number of Freecells") - BOOL, etc. - configure_files - CHECK_C_COMPILER_FLAG - WIN32 (variable) - UNIX (variable) -