CMake User Contributed Macros

From KitwarePublic
Revision as of 16:49, 8 September 2014 by Toeb (talk | contribs)
Jump to navigationJump to search

User Contributed Macros

Find Modules

Although CMake comes with a whole bunch of FindXXX packages, there is a large number of packages there are not covered. The hope is that these user-contributed macros will eventually make their way into the official distribution. Before contributing, please have your FindXXX package conform to the CMake Module Guidelines.

  1. Find Autopack
  2. Find ClanLib
  3. Find DirectShow
  4. Find MySQL
  5. Find ParMetis
  6. Find VLD - Visual Leak Debugger
  7. Find WIX - Windows Installer XML,v2
  8. Find LibSVM - A Library for Support Vector Machines
  9. Find MuParser - High performance math expression parser library
  10. Find Octave - Interpreted language for numerical computations
  11. Use Bison - Parser Generator
  12. Use Flex - Lexer Generator
  13. Use LaTeX - Build LaTeX Documents
  14. Use RPM Tools - Build RPM (source or binary)
  15. Find CTPP2 - C++ Template Engine
  16. Find Qwt - Qt Widgets for Technical Applications
  17. Find QScintilla - port to Qt of Neil Hodgson's Scintilla C++ editor control

Home Back

Comprehensive Collection of CMake functions/macros

For CMake 2.8.7 and higher. More complex build scripts might need a larger toolset than is provided by CMake. Here is a tested collection of over 500 CMake functions which you can easily download and use by just including a single file in your CMakeLists.txt.

Repository: [https://github.com/toeb/oo-cmake] MIT License

Some features

  • interactive cmake shell
  • eval
  • maps (objects without functions)
    • serialization to and from json
  • function functions
    • return values
    • dynamic call
  • objects
  • list tools
    • slice, splice, filter, map, fold
  • string tools
    • slice, splice, ...
  • semver
    • parse, compare, constrain semantic versions
  • shell tools
  • filesystem
    • many bash like functions which work on windows and unix systems(ls, touch, fwrite, fread, cd, pwd, pushd, popd, rm, ...)
    • read_line from console
  • debugging
    • breakpoint
    • print scope
  • ...


An up to date full feature list and installation guide is located [here]

Make Equivalents

While attempting to convert a gnu makefile to Cmake, there was a need to provide some macros to provide equivalent functionality.

  1. FILTER_OUT (filter-out)
  2. CREATE_LIBTOOL_FILE (create a libtool archive file)

Home Back

Some helpers along the way

  1. COPY_IF_DIFFERENT
  2. MERGE --- Merges two sorted lists into a single sorted list. Useful to keep source and header files next to each other.
  3. CREATE_FINAL_FILE -- create a KDE style final file, which includes all source files, so that the compilation will be noticable faster.
  4. List Operations -- A compilation of some helpful list operations.
  5. PARSE_ARGUMENTS -- A macro to help parse arguments for other macros.
  6. ADD_CXXTEST -- A macro to add tests written the CxxTest testing framework.
  7. Force Flags -- A macro to force certain arguments for specified flag (similar to a set union).
  8. Test Inline -- A test for how your compiler defines inline.
  9. COMPARE_VERSION_STRINGS -- A macro to help compare arbitrary version strings for less than, equal to, and greater than.

See also the list of all macros in the CMake Macro category.

Home Back

Visual Studio generator helpers

When generating Visual Studio projects, the priorities can be sometimes different than for other generators. These are some VS-specific (and sometimes not-so-specific) macros that could help you generate better VS projects.

  1. GatherProjectFiles -- create and cache a list of project files by recursively globbing a directory structure
  2. GenerateProject -- creates a VS project with subgroups that mimic the directory structure


Home Back



CMake: [Welcome | Site Map]