Common CMake modules

Related tags

Build Systems CMake
Overview

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

Comments
  • Fix issues with 'tests' target

    Fix issues with 'tests' target

    • d81529d by @hernando started support for multiple test suites. This caused higher-level cppcheck targets not to run anymore, and in reality only worked for one instance of cpp ctests.
    • Each test is now run as a separate ctest (side benefit: parallel tests as per '-j' build command line!). This also simplifies perf/unit test separation
    • Directly add run_cppcheck targets to tests target instead of using add_test.
    • Doxygen depends only on project tests for coverage, not on all tests
    • Remove cppcheck and cpplint tests, covered by run_ targets now.
    • Jenkins will need to change to use 'make tests' instead of ctest directly. ctest command line parameters needed for this change are included here
    opened by eile 10
  • Fix in git clone for CMake/common

    Fix in git clone for CMake/common

    GitExternal is using a potentially non-existing directory to clone it when COMMON_SOURCE_DIR is set, however the git command doesn't need any specific working directory to do the job.

    opened by hernando 8
  • Make missing required dependencies not FATAL_ERROR

    Make missing required dependencies not FATAL_ERROR

    Takes the basic idea from BRayns, luckily common_package is a macro to allow the retur() out of the top-level CMakeLists. Sample configure run provided below. Also removed the superfluous/harmful extra find_package in SubProject.cmake @biddisco complained about.

    -- Configured Hello [ff94cfa] with Boost
    -- Configured Servus [4e4ea43] with DNSSD Boost Threads
    -- Configured Deflect [83aaa6b] with Boost GLUT LibJpegTurbo OpenGL Qt5Concurrent Qt5Core Qt5Network Qt5Qml Qt5Quick Qt5Widgets Servus
    -- Configured ZeroBuf [23ac6b4] with Boost Servus
    -- Configured Lunchbox [33a354c] with Boost leveldb Servus WITHOUT hwloc MPI OpenMP skv
    -- Not configured osgTransparency: Required OpenSceneGraph not found
    -- Configured Pression [e813e22] with LibJpegTurbo Lunchbox WITHOUT OpenMP
    -- Configured vmmlib [66a1b6d] with Boost
    -- Configured Brion [d76760e] with BBPTestData Boost HDF5 Lunchbox vmmlib WITHOUT OpenMP
    -- Configured Collage [fa984ee] with Boost Lunchbox Pression WITHOUT OFED UDT
    -- Configured dash [6e05142] with Boost Lunchbox
    -- Configured TUIO [b002886] with GLUT OpenGL SDL
    -- Not configured DisplayCluster: Required MPI not found
    -- Configured GLStats [3c76246] with Lunchbox OpenGL
    -- Configured hwsd [bb9fea4] with Boost Lunchbox OpenGL Qt5Core Qt5Network Servus X11
    -- Configured zeq [6229239] with Boost FlatBuffers libzmq Servus Threads ZeroBuf
    -- Configured BBPSDK [b248d40] with BBPTestData Boost Brion Java JNI Lunchbox PythonInterp PythonLibs vmmlib WITHOUT BBPDocumentation OpenMP SWIG
    -- Configured Equalizer [7bfcd4a] with Boost Collage Deflect GLStats hwsd Lunchbox MAGELLAN OpenGL Pression Qt5Core Qt5Gui Qt5Widgets vmmlib VRPN GLEW_MX WITHOUT hwloc OpenCV OpenSceneGraph X11 hwloc
    -- GLX window system not supported: Skipping example eqCPU
    -- Linking boost testing libs dynamically...
    -- Boost version: 1.59.0
    -- Found the following Boost libraries:
    --   unit_test_framework
    --   system
    --   regex
    --   date_time
    --   thread
    --   filesystem
    --   program_options
    --   chrono
    --   atomic
    -- Configured RESTBridge [a126090] with Boost cppnetlib FlatBuffers zeq
    -- Configured Monsteer [96c8f40] with BBPTestData Boost Brion FlatBuffers Lunchbox PythonInterp PythonLibs vmmlib zeq WITHOUT MPI music
    -- Configured NeuMesh [b6d1f48] with BBPSDK BBPTestData Boost Brion GTK2 GTS HDF5 Lunchbox OpenGL PythonInterp vmmlib VTK WITHOUT OpenMP
    -- Not configured BRayns: Required OSPRay not found
    -- Configured Livre [af4e4b8] with BBPTestData Boost Collage dash Equalizer FlatBuffers GLEW_MX LibJpegTurbo Lunchbox Monsteer OpenGL PNG Qt5Core Qt5OpenGL Qt5Widgets RESTBridge Threads zeq WITHOUT OpenMP Tuvok VTune
    -- Not configured RTNeuron: Required OpenSceneGraph not found
    -- Configured Cubist [0875a40] with Boost GLEW_MX Livre OpenGL VTK
    -- Performing Test C_HAS_WARNING-Wformat=2
    -- Performing Test C_HAS_WARNING-Wformat=2 - Success
    -- Performing Test CXX_HAS_WARNING-Wformat=2
    -- Performing Test CXX_HAS_WARNING-Wformat=2 - Success
    -- Configured Fivox [788753c] with BBPSDK BBPTestData Boost Monsteer ITK Livre vmmlib libzmq
    -- Configured livreDatasources [9484809] with Boost HDF5 Livre
    -- Configured bbp [e41c4bc]
    -- Configuring done
    
    
    opened by eile 8
  • -WError abuse

    -WError abuse

    The file CommonCompiler.cmake force the usage of the flag -WError.

    His usage is completely understandable and justified for build in "Debug" mode. It is however a bad practice to enable it by default for release build due to its tendency to break the build each time a new compiler implement new warning reporting.

    Could you please, enable this flag only when the build is configured in "Debug" mode ?

    Thank you in advance, Adev

    enhancement 
    opened by adevress 7
  • Updated Coverage.cmake to include full source tree

    Updated Coverage.cmake to include full source tree

    • before, ${PROJECT_SOURCE_DIR}/${PROJECT_INCLUDE_NAME} was being used as one of the 'gathering' directories, made this more general, so source trees with different layouts will work
    • also fixed a typo
    opened by mgeplf 7
  • Fix SubProject find_package to work with /cmake/lib/project paths

    Fix SubProject find_package to work with /cmake/lib/project paths

    Some projects put their ${project}Config.cmake files in locations other than the root. The recent changes to SubProjects added an automatic find and do not look in those locations.

    opened by biddisco 7
  • Improvements in CMake package config generation.

    Improvements in CMake package config generation.

    Added an input variable to choose the target libraries to export instead of all the generated ones. Fixed extraction of library names from target properties.

    The intention of this change is to restrict the libraries exported by FOOConfig.cmake to those that provide the C++ API being exported (for example, python binding libraries can be filtered out).

    opened by hernando 7
  • COMMON_USE_CXX03 doesn't set -std flag

    COMMON_USE_CXX03 doesn't set -std flag

    By default, the flag -std=c++11 is set. But when using COMMON_USE_CXX03, neither -std=c++98 nor -std=c++03 is used. It would be good to set this flag for consistency. It will also make it easier to manage standard conformance consistently for both C++11 and C++03 standards by using the pedantic flags.

    bug 
    opened by juanchopanza 6
  • Restore missing cppcheck include for version.h (remove in #284)

    Restore missing cppcheck include for version.h (remove in #284)

    @tribal-tec FYI - This folder was removed from includes in #284 . This breaks the compilation of BBPSDK after the update:

    https://bbpcode.epfl.ch/ci/job/common.BBPSDK.gerrit/build_type=Debug,platform=cscsviz/261/testReport/projectroot.gpfs.bbpcscsch.home.bbprelman.jenkins-cscs-02.workspace.commonBBPSDKgerrit.build_type.Debug.platform.cscsviz/BBP/cppcheck_test_BBPSDK/

    opened by rdumusc 6
  • Subproject git modules not cloned recursively

    Subproject git modules not cloned recursively

    When running cmake, a subproject module is initialized and cloned, but this project modules are not cloned, however, causing the build to fail.

    https://github.com/Eyescale/CMake/blob/935807ce40c04e507063e45a5286cf1804f5cf45/GitExternal.cmake#L114

    The reason is that the call to git submodule init is not recursive, not registering the paths of the subproject module's modules, thus when the git submodule update --recursive call is executed, these non registered paths are not cloned. Executing these 3 commands manually results in the same behaviour.

    The test case is Brion https://github.com/BlueBrain/Brion The scenario where this happens occurs when dealing with its sub module "libsonata". The structure is:

    - Brion
        - libsonata
            - HighFive
            - fmt
    

    If Brion is the subproject, when building, libsonata will be cloned, but HighFive and fmt (which are git submodules) will not be cloned.

    adding --init to the line pointed above solves the problem, although it clones again CMake/common.

    This can be fixed manually by running git submodule udpate --init in the problematic subprojects, however this cannot be applied to the CI jobs.

    opened by NadirRoGue 0
  • Extra targets

    Extra targets

    Hi, is there any way to disable all the extra targets that cmakecommon generate? Im thinking about project-tarball, project graph, cpplint, clangchecks and all that.

    Thanks

    opened by jjcasmar 1
  • FindPackage not found persists [Reopen]

    FindPackage not found persists [Reopen]

    I reopen this issues because I think that your answer doesn't solve it and I think it's not correct. Of course I may be wrong, but in any case, proves that the original answer didn't solve my doubts. For anyone looking at this, the original question and answer are below.

    I have just done a really simple plain CMake project

    cmake_minimum_required(VERSION 3.5)
    PROJECT(StupidCMake)
    
    find_package(SUtils REQUIRED)
    

    If SUtils is not found, CMake will complains saying that you should provide a FindSUtils.cmake or point SUtils_DIR to a dir containing SUtilsConfig.cmake.

    If, without deleting the cache, you try to reconfigure providing that dir, it will find the library. You can try it with any of your libraries, I have check it with mine. This is the behavior I would expect from CMakeCommon also. As this is not the case, I would say that this is a CMakeCommon feature/bug. How can I make it work in the original way?

    [Original question] Imagine that you have a library which doesn't provide a FindFoo.cmake and therefore you use FooConfig.cmake. You should provide Foo_DIR for CMake to find it. If you forget to add it, CMake will complain, but if you add it after the first configuration, it will stay says that it can't be found.

    The only way I've found to solve this is to remove the CMakeCache (or remove just the entries related with Foo) and reconfigure, but its really annoying to have to do this.

    Is this a bug or am I using it wrong?

    [Original answer] Regretfully, this is a CMake "feature". The variables that decide that a library was not found are cached, so next time CMake runs it doesn't need to resolve them again. Forcing CMake to ignore these variables will basically render the cache useless. Another example is changing the compiler used for building. Once a compiler is detected, you cannot change it without removing the cache.

    opened by jjcasmar 5
  • Cuda support

    Cuda support

    Hi, ive been using CMakeCommon for a while now, but ive not been able to compile any library which uses CUDA.

    If I try to compile using cuda_add_library, CMakeCommon complains that the target is not exported, but if I try to compile using common_library, g++ is used and not nvcc.

    I believe that I should modify CMAKE_C_COMPILER and CMAKE_CXX_COMPILER to use nvcc and a compatible gcc compiler. I thought that was that CommonCUDA did, but it seems there is a bug in the string(REGEX REPLACE) command.

    What should I do?

    Thanks!

    opened by jjcasmar 8
Releases(2018.02)
  • 2018.02(Feb 6, 2018)

    • 575: Add macro in CommonCPackUtils to help package subprojects
    • 574: Disable warnings on windows
    • 569: Minor fix for GitInfo if GIT_BRANCH could not be determined
    • 568: Create projects-tests target for adding python tests if not existing
    • 567: Make PYTHON_TEST_EXCLUDE work as documented
    • 566: Fix finding libjpeg-turbo-devel .rpm package with jconfig-64.h
    • 565: Fix bitrot in rpm spec license config
    • 564: Don't quiet python tests (as is done with C++)
    • 563: Fixed false circular dependency warning in big metaprojects
    • 560: Simplify GitExternals
    • 556: Fix rare bug with project-install missing dependencies
    • 555: Add missing defines to version.h to ease usage w/o the need for linking
    • 553, 554: Fix CommonGraph target
    Source code(tar.gz)
    Source code(zip)
  • 2017.05(Jun 6, 2017)

    • 551: Subproject changes:
      • Cloning of subprojects has been disabled by default. Users must explicitly set -DCLONE_SUBPROJECTS=ON to clone missing dependencies during the cmake run.
      • CMake/common can be integrated as a .gitmodule without getting an unnecessary copy in each subproject.
    • 550: CommonLibrary: NAME_OMIT_VERSION_HEADERS to disable api.h/version.h|cpp
    • 549: Remove Tuvok finder in favor of provided package config
    • 545: CommonCPack fixes: follow Debian package naming conventions, make ABI version in package name optional
    • 545: common_application(GUI): install application icon and launcher on Linux
    • 544: FindLibJpegTurbo.cmake parses jconfig.h for version check
    • 540: Add CommonSmokeTest.cmake to check execution of installed applications
    • 539: Add Findrados.cmake
    • 538: Allow integration of subprojects outside of COMMON_SOURCE_DIR
    • 537: Automatically add a pre-commit hook to git repos for running clang-format
    • 535: New common_help() to generate help page for doxygen
    • 534: Remove unneeded zmq finder
    • 533: Add application-help-to-doxygen extraction
    • 532: Only update SHA-1s in .gitsubprojects after update instead of rewriting the whole file
    • 532: Fix missing git submodule update after rebase
    • 531: Revert parallel clone due to failure of clones in CI
    • 530: Fix return value of Version::getRevision to 64 bit for longer git SHAs
    • 529: Fix python3 finding on OSX with -DUSE_PYTHON_VERSION=3
    Source code(tar.gz)
    Source code(zip)
  • 2016.12(Jan 11, 2017)

    • 529: Fix python3 finding on OSX with -DUSE_PYTHON_VERSION=3
    • 527: Refactor INSTALL_PACKAGES out of SubProject.cmake, also fixing a bug that the dependencies of a project were not installed if it did not have a .gitsubprojects file.
    • 526: Provide getSchema() and toJSON() for generated version.h
    • 517: Clone sub projects in parallel. This feature can be optionally disabled with COMMON_SUBPROJECT_PARALLEL_CLONE set to OFF.
    • 516: Support for GCC 6
    • 515: Tweaked configure output to only list not found dependencies; show all with COMMON_FIND_PACKAGE_QUIET set to OFF
    • 512: Add COMMON_DISABLE_WERROR option
    • 510: Also create project-all target for super project
    • 507: Handle required version in FindNumPy.cmake
    • 506: Added CommonPythonTest.cmake to ease adding Python tests to project under CTest.
    • 505: Added CommonCUDA.cmake with some common configuration checks for CUDA.
    • 504:
      • Add support for yum to subproject_install_packages
      • Make sure that package installation is only attempted if INSTALL_PACKAGES is in the command line (i.e. do not cache the variable).
    • 503: Added optional MODULE argument to common_find_package() as a hint for pkg_config. Example usage: common_find_package(RSVG MODULE librsvg-2.0)
    • 500: Added WIN32 option to CommonApplication to be able to build WinMain-based apps (no console).
    Source code(tar.gz)
    Source code(zip)
  • 2016.06(Jun 30, 2016)

    • 497: Fix install directory of common_application data
    • 494: Fix include paths in project header file for generated files within the binary dir
    • 493: Do not mess with LCOV_EXCLUDE which is set by outside users
    • 486: Fix coverage report generation for the top-level project
    • 478: CMake3 port and various cleanups
      • CMake 3.1 is now required
      • Renames of files
        • CommonPackage.cmake -> CommonFindPackage.cmake
        • Compiler.cmake -> CommonCompiler.cmake
        • Coverage.cmake -> CommonCoverage.cmake
      • Renames of variables and options
        • CMAKE_COMPILER_IS_GNUCXX -> CMAKE_COMPILER_IS_GCC
        • COMMON_PACKAGE_DEFINES -> COMMON_FIND_PACKAGE_DEFINES
        • COMMON_PACKAGE_USE_QUIET -> COMMON_FIND_PACKAGE_QUIET
        • DOC_DIR -> COMMON_DOC_DIR
        • ENABLE_CLANGCHECK_TESTS -> COMMON_ENABLE_CLANGCHECK_TESTS
        • ENABLE_COVERAGE -> COMMON_ENABLE_COVERAGE
        • ENABLE_CXX11_STDLIB -> COMMON_ENABLE_CXX11_STDLIB
        • ENABLE_WARN_DEPRECATED -> COMMON_WARN_DEPRECATED
        • GIT_EXTERNAL_VERBOSE -> COMMON_GIT_EXTERNAL_VERBOSE
        • VERSION_ABI -> ${PROJECT_NAME}_VERSION_ABI
        • VERSION -> ${PROJECT_NAME}_VERSION
      • Renames of functions
        • common_compiler_flags() -> common_compiler_options(${target})
        • common_package() -> common_find_package()
        • common_package_post() -> common_find_package_post()
      • VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH are now part of project()
      • OUTPUT_INCLUDE_DIR removed; use ${PROJECT_BINARY_DIR}/include instead
      • Per-target include directories and definitions instead of global pollution
      • Qt support is now implicit thanks to AUTOMOC, AUTORCC and AUTOUIC feature: NAME_MOC_HEADERS, NAME_UI_FORMS and NAME_RESOURCES are not supported anymore; use NAME_PUBLIC_HEADERS, NAME_HEADERS and NAME_SOURCES accordingly
    • 477: Rename functions to common_cppcheck, common_clangcheck and common_cpplint to solve a name clash with ITK
    • 474: common_library() : add an option to omit install (useful for test libs)
    • 472: Remove common_gui_application, add GUI and EXAMPLE arguments to common_application
    Source code(tar.gz)
    Source code(zip)
  • 2016.04(Jun 30, 2016)

    • Add COMMON_OSX_TARGET_VERSION - OS X target version
    • Add OPTIONAL argument to git_external. This gives users the possibility of cloning a repository without aborting the configuration if the operation fails
    • Coverage.cmake fixes:
      • Fix missing coverage report for multiple project directories
      • Rename targets to match PROJECT_NAME-target syntax
      • Exclude only generated files from COMMON_GENERATED_FILES property, not everything from PROJECT_BINARY_DIR
    • Added new test targets called nightlytests and Project-nightlytests. This targets depend on perf tests, and cpp test files with the prefix "nightly".
    • Add c++11 noexcept test (CXX_NOEXCEPT_SUPPORTED define)
    • Add Findhttpxx.cmake
    • Add Sanitizer.cmake for gcc and clang runtime sanitizer support
    • Add CoverageGcovr.cmake for gcovr support
    • FindGLEW_MX considers GLEW_ROOT as environment and CMake variable
    • Fix install in common_library() with subfolders
    • Ignore moc and qrc files in coverage report
    • Make CPACK_RESOURCE_FILE_LICENSE configurable
    • New CompilerIdentification.cmake, resulted from splitting Compiler.cmake
    • Remove Findzeromqcpp.cmake, use Findlibzmq.cmake instead
    • Remove obsolete GIT_TARGETS_RELEASE_BRANCH
    • Remove -DBOOST_TEST_DYN_LINK from all translation units
    Source code(tar.gz)
    Source code(zip)
Owner
Eyescale Software GmbH
Eyescale Software GmbH
Utility and common library for all polysquare cmake tools.

Polysquare CMake Tooling Utility Functions Utility and common library for all polysquare cmake tools. Status Travis CI (Ubuntu) AppVeyor (Windows) Cov

ポリ平方 POLYSQUARE 3 May 7, 2021
CMake modules to help use sanitizers

sanitizers-cmake CMake module to enable sanitizers for binary targets. Include into your project To use FindSanitizers.cmake, simply add this reposito

Matt Arsenault 295 Dec 23, 2022
CMake Community Modules

CMake Community Modules The CMake Community Modules are CMake modules created and maintained by the community. This repository's main product is the C

Edgar 2 Dec 14, 2022
Extra CMake Modules for YARP and friends

YCM Extra CMake Modules for YARP and friends Documentation Online documentation is available

Robotology 43 Dec 27, 2022
Extra modules and scripts for CMake.

Extra CMake Modules Introduction The Extra CMake Modules package, or ECM, adds to the modules provided by CMake, including ones used by find_package()

KDE GitHub Mirror 104 Nov 16, 2022
CMake modules for some scientific libraries

A collection of CMake modules, which can mostly be used independently. The utilities for writing robust Find* modules might be useful until CMake take

Jed Brown 83 Dec 4, 2022
Additional CMake functionality. Most of the modules are from Ryan Pavlik

Additional CMake functionality. Most of the modules are from Ryan Pavlik

Lars Bilke 452 Dec 28, 2022
Ryan's CMake Modules Collection

This is a collection of CMake modules that I've produced during the course of a variety of software development.

Ryan A. Pavlik 891 Jan 9, 2023
A set of cmake modules to assist in building code

CMake 3 Tools Warning: These tools are being replaced by the Modern CMake. Some of the tools are still being maintained for now, but new projects shou

null 201 Dec 21, 2022
📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.

Setup-free CMake dependency management CPM.cmake is a CMake script that adds dependency management capabilities to CMake. It's built as a thin wrapper

CPM.cmake 1.6k Jan 9, 2023
CMake scripts for painless usage of SuiteSparse+METIS from Visual Studio and the rest of Windows/Linux/OSX IDEs supported by CMake

CMake scripts for painless usage of Tim Davis' SuiteSparse (CHOLMOD,UMFPACK,AMD,LDL,SPQR,...) and METIS from Visual Studio and the rest of Windows/Lin

Jose Luis Blanco-Claraco 395 Dec 24, 2022
cmake-font-lock - Advanced, type aware, highlight support for CMake

cmake-font-lock - Advanced, type aware, highlight support for CMake

Anders Lindgren 39 Oct 2, 2022
cmake-avr - a cmake toolchain for AVR projects

cmake-avr - a cmake toolchain for AVR projects Testing the example provided The toolchain was created and tested within the following environment: Lin

Matthias Kleemann 163 Dec 5, 2022
Make CMake less painful when trying to write Modern Flexible CMake

Izzy's eXtension Modules IXM is a CMake library for writing Modern flexible CMake. This means: Reducing the amount of CMake written Selecting reasonab

IXM 107 Sep 1, 2022
CMake module to enable code coverage easily and generate coverage reports with CMake targets.

CMake-codecov CMake module to enable code coverage easily and generate coverage reports with CMake targets. Include into your project To use Findcodec

HPC 82 Nov 30, 2022
unmaintained - CMake module to activate certain C++ standard, feature checks and appropriate automated workarounds - basically an improved version of cmake-compile-features

Compatibility This library provides an advanced target_compile_features() and write_compiler_detection_header(). The problem with those is that they a

Jonathan Müller 74 Dec 26, 2022
[CMake] [BSD-2] CMake module to find ICU

FindICU.cmake A CMake module to find International Components for Unicode (ICU) Library Note that CMake, since its version 3.7.0, includes a FindICU m

julp 29 Nov 2, 2022
A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages.

Buck Buck is a build tool. To see what Buck can do for you, check out the documentation at http://buck.build/. Installation Since Buck is used to buil

Facebook 8.5k Jan 7, 2023
CMake project for BL602 RISC-V processor

bl602_cmake_base CMake project for BL602 RISC-V processor How to build NOTE : This project uses a pre-compiled version of the Buffalo SDK (bl_iot_sdk)

null 9 Jan 6, 2022