The CMake Build system And Software Implementation Standard (BASIS) makes it easy to create sharable software and libraries that work together. This is accomplished by combining and documenting some of the best practices and utilities available. More importantly, BASIS supplies a fully integrated suite of functionality to make the whole process seamless!
Homepage | GitHub | SourceForge | Open Hub (Ohloh) | Travis CI
Project Creation
Standards
Build system utilities
Documentation
Testing
Program Execution
Supported Languages:
Supported Packages:
Additional documentation is available in several locations:
See the installation instructions or the INSTALL file. Information on where the executables and libraries, the auxiliary data, and the documentation files get installed is also available there. For more concise installation steps, have a look at the Quick Start Installation.
If you need help after searching the documentation or want to report a problem, you can reach the CMake BASIS developers on GitHub using the CMake BASIS Issue Tracker.
Copyright (c) 2011-2013 University of Pennsylvania
Copyright (c) 2013-2014 Carnegie Mellon University
Copyright (c) 2013-2016 Andreas Schuh
CMake BASIS is distributed under the terms of the BSD 2-clause License. The complete license text can be found on the download page and in the COPYING.txt file.
Path | Content description |
---|---|
BasisProject.cmake | Meta-data used for the build configuration. |
CMakeLists.txt | Root CMake configuration file. |
config/ | Package configuration files. |
doc/ | Documentation source files. |
example/ | Example files used in the tutorials. |
include/ | Public header files. |
src/cmake/ | CMake modules and corresponding auxiliary files. |
src/sphinx/ | Themes and extensions for the Sphinx documentation tool. |
src/utilities/ | Source code of utility functions. |
tools/ | Source code of command-line tools and project template. |
test/ | Unit tests for the provided libraries. |
This project was originally developed using Subversion as revision control system. When CMake BASIS was made public as open source, it has been migrated to GitHub using git svn. The Subversion history, however, was quite long and included big data files such as example image data, external libraries such as Boost, PDF files, and PowerPoint presentations. Due to the decentralized nature of Git, having such objects in the revision history of the repository adds significantly to the size of the repository and each clone.
With the release of CMake BASIS version 3.3.0, the history of the Git repository has
been rewritten using git filter-branch.
Moreover, the CMake modules have been separated from the complete suite of BASIS tools
using git subtree split.
This reduced the size of the repositories considerably from more than 200MB to less
than 10MB and supports the use of only the CMake modules in a project that does
not require the complete functionality.
The CMake BASIS Modules repository is
about 2MB in size when including all revisions. A shallow clone with --depth=1
is
less than 1MB. The CMake BASIS Find Modules
for use by the find_package
command are hosted in another GitHub repository.
Developers may copy only those Find modules needed by their project or install the
complete set of modules as part of CMake BASIS.
The shared CMake modules repositories are integrated into the main project with the
git subtree add
command. Changes of the CMake modules are first pushed to the main repository and
then to the respective subtree repositories using
git subtree push.
CMake BASIS versions prior to version 3.3.0 have to be downloaded from the legacy GitHub project because the intrusive history changes broke the integrity of previous versions.