Skip to content

Latest commit

 

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to Artichoke's documentation!

status CI

Introduction

You will find here a CMake module allowing to easily create a build system on top of ExternalProject module.

Features

  • Intuitive and easy way to "pass" CMake variables to external project. By default, variables are associated with CMAKE_CACHE_ARGS.
  • Support association of CMake variable with labels.
  • Automatically associate variables with CMAKE_ARGS if a multi-configuration CMake generator is used and ${CMAKE_CFG_INTDIR} is found in the value.
  • Automatically set external options LIST_SEPARATOR, CMAKE_GENERATOR, CMAKE_GENERATOR_PLATFORM and CMAKE_GENERATOR_TOOLSET.
  • If CMake >= 3.24, set DOWNLOAD_EXTRACT_TIMESTAMP to 1. See CMP0135
  • If CMake >= 3.28, set BUILD_JOB_SERVER_AWARE to 1. See Build Step Options
  • If not explicitly enabled, ensure User Package Registry look up using find_* commands is disabled.
    • If CMake >= 3.16, set CMAKE_FIND_USE_PACKAGE_REGISTRY to OFF otherwise set CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY to ON.
  • Display a well-formatted and user friendly summary of the included external projects. For example, see here
  • Support Ninja generator:
    • If supported, USES_TERMINAL_* options are always set to dependent projects.
    • The following variables are automatically propagated to all projects:
      • CMAKE_EXPORT_COMPILE_COMMANDS
      • CMAKE_JOB_POOL_COMPILE
      • CMAKE_JOB_POOL_LINK
      • CMAKE_JOB_POOLS
  • Intuitive handling of USE_SYSTEM options.
  • Recipe to write external project file that can be:
    • downloaded/configured/built/installed
    • and/or found on system using find_package(<projectname> ...) calls
    • and/or explicitly specified using -D<projectname>_DIR:PATH=... variables.

Examples

Note

To be documented

Usage

Note

To be documented

Integrating CMake Module in your project

Two possible approaches:

  • Use git submodule to reference this repository.
  • Copy ExternalProjectDependency.cmake into your source tree making sure you reference the SHA in the associated commit message.

API

.. toctree::
   :maxdepth: 2

   /ExternalProjectDependency


Test

sudo apt-get install cmake
git clone git://github.com/commontk/Artichoke
mkdir ArtichokeTest-build
cd ArtichokeTest-build
cmake ../Artichoke/Tests
ctest

About

CMake module allowing to easily create a build system on top of ExternalProjects

Resources

Stars

10 stars

Watchers

4 watching

Forks

Used by

Contributors

Languages