Awesome
=========== CMake BASIS
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
Features
Project Creation
- Quick project setup with mad-libs style text substitution
- Customizable project templates
Standards
- Filesystem layout standards
- Basic software implementation standards
- Command-line parsing standards
- Guidelines on coding style
Build system utilities
- New CMake Module APIs
- Version Control Integration
- Automatic Packaging
Documentation
- Documentation generation tools
- Manuals
- PDF and HTML output of each
- Integrated with CMake APIs
Testing
- Unit testing
- Continuous integration
- Executable testing frameworks
Program Execution
- Parsing library
- Command execution library
- Unix philosophy and tool chains
Supported Languages:
- C++, BASH, Python, Perl, MATLAB
Supported Packages:
- CMake, CPack, CTest/CDash, Doxygen, Sphinx, Git, Subversion, reStructuredText, gtest, gflags, Boost, and many more, including custom packages.
Get Started
- Get your first taste with the Quick Start Guide.
- Check out the How-to Guides for easy introductions to common tasks.
- Learn more About CMake BASIS, where it came from and why.
- Investigate the Reference and API for more in-depth information.
Documentation
Additional documentation is available in several locations:
- First and foremost on the CMake BASIS website.
- The software manual as PDF.
- The documentation installed in the doc directory for offline access.
- The source package documentation directory works in a pinch as well.
Installation
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.
Help
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.
License
Copyright (c) 2011-2013 University of Pennsylvania <br /> Copyright (c) 2013-2014 Carnegie Mellon University <br /> 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.
Package Content
Path | Content description |
---|---|
BasisProject.cmake | Meta-data used for the build configuration. |
[CMakeLists.txt] 21 | Root CMake configuration file. |
[config/] 22 | Package configuration files. |
[doc/] 24 | Documentation source files. |
[example/] 25 | Example files used in the tutorials. |
[include/] 26 | Public header files. |
[src/cmake/] 27 | CMake modules and corresponding auxiliary files. |
[src/sphinx/] 29 | Themes and extensions for the Sphinx documentation tool. |
[src/utilities/] 30 | Source code of utility functions. |
[tools/] 31 | Source code of command-line tools and project template. |
[test/] 32 | Unit tests for the provided libraries. |
Legacy GitHub Project
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.
<!-- --------------------------------------------------------------------------------- --> <!-- Links to GitHub, see the local directory if you have downloaded the files already --> <!-- Links to web page and online ressources --> <!-- Links to GitHub, see the local directory if you have downloaded the files already -->