A modern cmake starter project for C++ with a complete build lifecycle, testing, dependency management, etc. Portable across Linux, OS X and Windows.
Fix top level install not working properly (4ac4a31)
CMAKE_MODULE_PATH
should be reset at the top level project to make sure that
every sub-project uses its own version of the cmake
files. Additionally,
refactor the top-level install code to simplify it and remove the need to call
a function in the top-level project cmake
script.
#19 use generator expressions instead of CMAKE_BUILD_TYPE (857d299)
Code that checks CMAKE_BUILD_TYPE to set specific compiler flags or defines is problematic. Generator expressions should be used instead to handle configuration-specific logic correctly, regardless of the generator used.
use cmake-format extension default behavior (a5d5c5e)
No need to force the cmake-format
config file location as the command is run
in the workspace root by default and it will look for and find the config file
named cmake-format.yaml
.
#6: properly setup install layout (71fd5d5), closes #6
When the install prefix matches a system install directory (i.e. /usr or /usr/local), the project will be installed according to the conventions of GnuInstallDirs, otherwise, it will be installed using a simplified local layout as following:
# Install into local directory
set(ASAP_INSTALL_ROOT ".") # ./
set(ASAP_INSTALL_LIB "lib") # ./lib
set(ASAP_INSTALL_SHARED "${ASAP_INSTALL_LIB}") # ./lib
set(ASAP_INSTALL_CMAKE "${ASAP_INSTALL_ROOT}/share/cmake/${META_PROJECT_NAME}") # ./share/cmake/<project>
set(ASAP_INSTALL_PKGCONFIG "${ASAP_INSTALL_ROOT}/share/pkgconfig") # ./share/pkgconfig
set(ASAP_INSTALL_EXAMPLES "${ASAP_INSTALL_ROOT}") # ./
set(ASAP_INSTALL_DATA "${ASAP_INSTALL_ROOT}") # ./data
set(ASAP_INSTALL_BIN "bin") # ./bin
set(ASAP_INSTALL_INCLUDE "include") # ./include
set(ASAP_INSTALL_DOC "doc") # ./doc
set(ASAP_INSTALL_SHORTCUTS "misc") # ./misc
set(ASAP_INSTALL_ICONS "misc") # ./misc
set(ASAP_INSTALL_INIT "misc") # ./misc
#7: add build
and ops
commit types
(0d9187e),
closes #7
Added the following two commit types:
build
Commits, that affect build components like build tool, ci pipeline, dependencies, project version, ...ops
Commits, that affect operational components like infrastructure, deployment, backup, recovery, ...#8: add standard ccov excluded directories by default (a8aabb3), closes #8
The standard exclusions are:
*/test/*
in its path, i.e. files used to write tests,*/.cache/CPM/*
, i.e. third party modules included
using CPM,/usr
, i.e. system filesFull Changelog: https://github.com/abdes/asap/compare/v4.3.4...v4.3.5