=========== 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!
- Quick project setup with mad-libs style text substitution
- Customizable project templates
- 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 generation tools
- PDF and HTML output of each
- Integrated with CMake APIs
- Unit testing
- Continuous integration
- Executable testing frameworks
- Parsing library
- Command execution library
- Unix philosophy and tool chains
- C++, BASH, Python, Perl, MATLAB
- CMake, CPack, CTest/CDash, Doxygen, Sphinx, Git, Subversion, reStructuredText, gtest, gflags, Boost, and many more, including custom packages.
- 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.
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.
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
|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.