All Projects → Eyescale → Cmake

Eyescale / Cmake

Licence: other
Common CMake modules

Labels

Projects that are alternatives of or similar to Cmake

Core
parallel finite element unstructured meshes
Stars: ✭ 124 (-9.49%)
Mutual labels:  cmake
F4mp
Stars: ✭ 130 (-5.11%)
Mutual labels:  cmake
Gemm hls
Scalable systolic array-based matrix-matrix multiplication implemented in Vivado HLS for Xilinx FPGAs.
Stars: ✭ 134 (-2.19%)
Mutual labels:  cmake
Ros Travis Integration
ROS package continuous integration using travis-CI
Stars: ✭ 125 (-8.76%)
Mutual labels:  cmake
Ffmpeg Development Kit
Stars: ✭ 127 (-7.3%)
Mutual labels:  cmake
Limited Systems
Limited Systems
Stars: ✭ 132 (-3.65%)
Mutual labels:  cmake
More Modern Cmake
Contains the slides and examples for my "More Modern CMake" and "Oh No! More Modern CMake" talks from "Meeting C++" 2018 and 2019
Stars: ✭ 123 (-10.22%)
Mutual labels:  cmake
Sdl2 Examples
Examples for getting started with SDL2, for over 12 different programming languages
Stars: ✭ 136 (-0.73%)
Mutual labels:  cmake
Warzone2100
Command the forces of The Project in a battle to rebuild the world after mankind has been nearly destroyed by nuclear missiles. A 100% free and open source real-time strategy game for Windows, macOS, Linux, BSD+
Stars: ✭ 2,094 (+1428.47%)
Mutual labels:  cmake
Hlslib
A collection of extensions for Vivado HLS and Intel FPGA OpenCL to improve developer quality of life.
Stars: ✭ 131 (-4.38%)
Mutual labels:  cmake
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+7718.98%)
Mutual labels:  cmake
Cmake
A set of cmake modules to assist in building code
Stars: ✭ 127 (-7.3%)
Mutual labels:  cmake
Racecar gazebo
A gazebo-based simulator of the MIT Racecar.
Stars: ✭ 130 (-5.11%)
Mutual labels:  cmake
Chip8cpp
Chip-8 Emulator in C++
Stars: ✭ 125 (-8.76%)
Mutual labels:  cmake
Notepanda
📃 A simple cross-platform notepad. Based on Qt and C++.
Stars: ✭ 134 (-2.19%)
Mutual labels:  cmake
Arduino Cmake Ng
CMake-Based framework for Arduino platforms
Stars: ✭ 123 (-10.22%)
Mutual labels:  cmake
Example Cpp11 Cmake
Stars: ✭ 129 (-5.84%)
Mutual labels:  cmake
Cmakeprotosgrpc
gRPC + protobuf using CMake example
Stars: ✭ 137 (+0%)
Mutual labels:  cmake
Blt
A streamlined CMake build system foundation for developing HPC software
Stars: ✭ 135 (-1.46%)
Mutual labels:  cmake
Cmake Example
Example project which demonstrates various CMake features.
Stars: ✭ 131 (-4.38%)
Mutual labels:  cmake

CMake Modules

This repository contains common CMake modules and a collection of find scripts to locate non-CMake dependencies. The recommended way to use it is:

As a git submodule

In your project source dir, do:

git submodule add https://github.com/Eyescale/CMake CMake/common

And include it in the top-level CMakeLists.txt as follows:

list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/common)
include(Common)

Documentation

The following CMake modules can be included in your project:

  • Common does a common CMake setup, and also includes:
    • CommonLibrary common_library function to build a (shared) library using a standard recipe and generates header files for the library (api.h, version.h).
    • CommonApplication common_application function to build an application using a standard recipe.
    • CommonFindPackage common_find_package for more convenience over find_package and common_find_package_post (must be last after all common_find_package calls) to generate defines.h and options.cmake for feature checking.
    • CommonCompiler: Default compiler flags (including C++14) and useful default warnings can be set on given target to common_compile_options(); automatically applied for targets created with common_application() and common_library()
    • CommonHelp common_help function to create a documentation page from an application's --help output.
    • GitInfo sets variables with information about the git source tree.
    • GitTargets branch, cut, tag, erase, retag, tarball targets.
  • CommonCTest should be included from a tests subfolder. Does a common CTest setup, automatically adding all .cpp files in the current folder as unit tests to a tests target. It also includes:
    • CommonCoverage coverage target to generate a code coverage report as html, if COMMON_ENABLE_COVERAGE option is set. Additional compiler flags are set in that case, so it should be enabled only for debug builds.
    • CommonCheckTargets adds test targets for various static code checkers if the COMMON_ENABLE_STATIC_TESTS option is set.
    • CommonCPPCheck: cppcheck target for static code analysis. Also adds all cppcheck targets to tests target.
    • CommonClangCheck: clangcheck target for clang-check code analysis. Adds all clangcheck targets to tests if COMMON_ENABLE_CLANGCHECK_TESTS is set.
  • CommonPackageConfig generates cmake package information files for the project. These files let other CMake-based projects locate it through find_package (in config mode, without the need for a finder script). Must be included at the end of the CMakeLists.txt, after all targets have been added via common_library() and common_application().
  • CommonCPack Configures the CPack package generator to redistribute the project as an installable package. Also includes CommonPackageConfig.
  • DoxygenRule: doxygen target to build documentation into PROJECT_BINARY_DIR/doc. Optional doxycopy target to copy the results to ../GITHUB_ORGANIZATION/Project-M.m/. Must be included after all other targets.
  • SubProject: This module is automatically included in Common.cmake to build several CMake subprojects (which may depend on each other), which are declared in a .gitsubprojects file. To be compatible with the SubProject feature, (sub)projects might need to adapt their CMake scripts. Generally, CMAKE_BINARY_DIR should be changed to PROJECT_BINARY_DIR and CMAKE_SOURCE_DIR should be changed to PROJECT_SOURCE_DIR. See SubProject documentation for more details. A simple example project can be found at https://github.com/Eyescale/Collage.git, and a more complex one at https://github.com/BlueBrain/Brayns.git.

Additional features:

  • InstallDependencies lets users install known system packages during the initial configuration by doing "cmake -DINSTALL_PACKAGES=1". This is only implemented for Linux distributions using apt-get and yum package managers and MacPorts in OS X. The actual support depends on the project declaring its dependencies for each particular case.
  • CommonGraph adds graphs target to generate .png tree view of dependencies, gathered by CommonFindPackage and SubProject.

Detailed Change Log

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].