In order to ease certain tasks, the BASIS package also includes the following command-line tools:
basisproject | Creates a new project or modifies an existing one in order to add or remove certain components of the template or to upgrade to a newer template. |
basistest | Implements automated software tests. |
doxyfilter | Doxygen filter for all supported languages. |
The CMake modules and corresponding auxiliary files are used by any BASIS project for the configuration of the CMake-based build system, so that many setup steps can be automated. These commands often replace the standard CMake commands. For example, the CMake function basis_add_executable() replaces CMake’s add_executable() command.
The main CMake modules are:
BasisProject.cmake | File in every BASIS project defining basic project information. |
BasisTools.cmake | Defines CMake functions, macros, and variables. |
BasisTest.cmake | Replacement for the CTest.cmake module of CMake. |
BasisPack.cmake | Replacement for the CPack.cmake module of CMake. |
For each supported programming language, BASIS provides a library of utility functions. Some of these utilities are project independent and thus built and installed as part of the CMake BASIS package itself. Other utility implementations are project dependent. Therefore, the BASIS installation contains only template files which are customized and built during the configuration and build, respectively, of the particular BASIS project. This customization is done by the functions implemented by the UtilitiesTools.cmake module which is included and utilized by the main BasisTools.cmake module.
The BASIS utilities address the following aspects of the software implementation standard:
A brief summary of the common project layout required by all projects that follow BASIS is given below. Project templates are supplied by the BASIS package to make it easy for projects to follow this BASIS Project Directory Layout and standard Project Template. How to create and use such template is explained in the Using and Customizing Templates guide. The basisproject command-line tool further automates and simplifies the creation of new projects based on a project template.
config/ | Package configuration files. |
data/ | Data files required by the software. |
doc/ | Documentation source files. |
example/ | Example files for users to try out the software. |
include/ | Header files of the public API of libraries. |
lib/ | Module files for scripting languages. |
modules/ | Project Modules (i.e., subprojects). |
src/ | Source code files. |
test/ | Implementations of unit and regression tests. |
AUTHORS (.txt|.md) | A list of the people who contributed to this sofware. |
BasisProject.cmake | Calls basis_project() to set basic project information. |
CMakeLists.txt | Root CMake configuration file. |
COPYING (.txt|.md) | The copyright and license notices. |
INSTALL (.txt|.md) | Build and installation instructions. |
README (.txt|.md) | Basic summary and references to the documentation. |
See also
The Project Template for a complete list of required and other standard project files. The CMake BASIS Package itself also serves as an example of a project following this standard layout.
Note
Not all of the named subdirectories must exist in every project.