Abdes Asap Versions Save

A modern cmake starter project for C++ with a complete build lifecycle, testing, dependency management, etc. Portable across Linux, OS X and Windows.

v4.7.0

3 months ago

Features

  • add build option to enable or disable docs targets (481c240)
  • comprehensive macos builds for CI (084ae86)
  • comprehensive ubuntu builds for CI (27fce46)
  • comprehensive windows builds for CI (e46196f)
  • custom index.html should be optional in project doc root (9f906fd)
  • upgrade CPM to 0.38.1 (b333b38)

Bug Fixes

  • always include CTest even when ASAP_BUILD_TESTS is OFF (4c5ef88)

Documentation

  • configure project folders for esbonio extension (3adbff4)
  • there are no library modules anymore (53e34e2)
  • update for in-module or in-root sphinx docs (d2c0fe4)
  • update sphinx theme option to new name (a78e49a)
  • update url for executable books logo (8b4dd17)

v4.6.3

1 year ago

Enhancements

  • Simplify devcontainer setup by using features and additional container lifecycle commands.

Bug Fixes

  • Enable profiling for test coverage for MSVC (7348d0a), closes #22

v4.6.2

1 year ago

Features

  • increase ccache hit rate (a22a912)

  • more robust handling of contract checking mode (304e9ae)

    When linking against the contract checking and enforcement library asap-contract (https://github.com/asap-projects/asap-contract), it is possible to control the contract checking mode by passing a value for the CONTRACTS option when adding any type of target with asap_add_xxx API (e.g. asap_add_library. asap_add_test, etc):

    • CONTRACTS OFF : set contract checking mode to OFF

    • CONTRACTS AUDIT : set contract checking mode to AUDIT

    • CONTRACTS DEFAULT : set contract checking mode to DEFAULT

    • CONTRACTS AUTO : set contract checking mode using as a first priority the value passed in the cmake option OPTION_CONTRACT_MODE. If none is present, automatically set the mode based on the build configuration. For Debug -> AUDIT, For Release and RelMinSize -> OFF, and for RelWithDebInfo -> DEFAULT.

    • CONTRACTS TESTING : indicates that contracts are being testing and the target needs to have full control on the contract checking mode. Nothing will be done here.

    The default setting is AUTO.

Bug Fixes

  • build: #21 target option WARNING not propagated properly (432cdaf)

    By default, for every target we build, a compiler option will be added to treat warnings as errors, unless the target is added with WARNING as an option.

    When that option is used, we now properly propagate it to set the corresponding compiler option to NOT treat warnings as errors.

    This is useful when 3rd party dependencies have include files that generate warnings.

v4.6.1

1 year ago

Bug Fixes

  • always add code coverage 'all' targets (d7309a0)
  • version-info test was added even when ASAP_BUILD_TESTS is OFF (b566e7b)

v4.6.0

1 year ago

Features

  • More robust implementation of fatser builds with ccache

    option to control the use of ccache, default is OFF (49a17a9)

    Caching is enabled in GitHub CI builds and can be enabled in development environments by simply setting the cmake variable USE_CCACHE to 'ON'/'TRUE' or equivalent.

    A precondition for the environment is of course to have ccache installed which gets done automatically in GitHub workflows, but needs to be done in development environments. It is recommended to use brew/choco for MacOS/Windows, but to install from the pre-built binaries for Linux as the version that comes with most distros is quite old.

    It is to be noted that ccache with MSVC on Windows may have some issues and if that is the case, simply do not use it.

v4.5.2

1 year ago

Bug Fixes

  • sub-projects with tests fail due to coverage all target not being setup early enough (400b2cc)

v4.5.1

1 year ago

Bug Fixes

  • contract mode definition should only be added when not testing asap_contract (c6d5e34)
  • use correct path for the version include file (7997b68)

v4.5.0

1 year ago

Features

  1. version-info tool

    Add the version-info tool to print the project info (cb228e8)

    This tool uses the generated version.h file in a small C++ program to print the project's info, as defined in the project's master CMakeLists.txt.

    It also constitutes an example of how to use the version.h file and a simple test to check that the asap infrastructure for defining and building targets is working.

  2. More visibility on project/module nesting

    Enhance configure logs with project/module nesting hierarchy (f6c13f2)

    Track the projects/modules nesting level with a hierarchy stack updated when we enter/exit a project/module. Most of the management is done automatically as helper functions get called to add modules or external packages. Some of the boilerplate (minimal) is still manual:

    • In the top-level CMakeLists.txt, the project needs to pushed at the beginning and popped at the end.
    • In each module CMakeLists.txt, the module needs to be pushed at the start and popped at the end.

    Use the ASAP_LOG_PROJECT_HIERARCHY to get a string that contains the nesting hierarchy.

  3. Formatting

    Implement robust project-wide formatting (afcaebe)

    Now we can format cmake files with cmake-format and any of the file types supported by clang-format (including C++, JavaScript and Json) with clang-format.

    The following additional targets are defined:

    • format Shows which files are affected by clang-format
    • check-format errors if files are affected by clang-format (for CI)
    • fix-format Applies clang-format to all affected files

    Dedicated targets for each of cmake-format and clang-format are also added (e.g. cmake-format, clang-format, check-clang-format,...)

Bug Fixes

  • generated version.h should follow project naming (329bcdf)
  • install master project generated header files (3c5c162)

Documentation

  • add example output from version-info tool (3a5515e)
  • update after new formatting system (082e513)

v4.4.7

1 year ago
  • Refactor cmake common modules and the master cmake script to better work with sub-projects built with asap.
  • Reduce the verbosity of some actions and avoid re-running things when not needed.

v4.4.8

1 year ago

Bug Fixes

  • Restore test setup deleted by mistake (cec7b9d)