CMinx: A CMake Documentation Generator

dc.contributor.author Butler, Branden
dc.contributor.author Richard, Ryan M.
dc.contributor.department Ames National Laboratory
dc.date.accessioned 2023-05-22T22:42:49Z
dc.date.available 2023-05-22T22:42:49Z
dc.date.issued 2022-09-27
dc.description.abstract This manuscript introduces CMinx, a program for generating application programming interface (API) documentation written in the CMake language, and CMake modules in particular. Since most of CMinx’s intended audience is comprised of C/C++ developers, CMinx is designed to operate similar to Doxygen (Heesch, 2022), the de facto C/C++ API documentation tool. Specifically, developers annotate their CMake source with “documentation” comments, which are traditional CMake block comments starting with an extra “[” character. The documentation comments, written in reST (reStructuredText, 2022), describe to the reader how the functions, parameters, and variables should be used. Running CMinx on the annotated source code generates reST files containing the API documentation. The reST files can then be converted into static websites with tools such as Sphinx (Sphinx, 2022) or easily converted to another format via Pandoc (Pandoc, 2022). Unlike other solutions for documenting CMake modules, CMinx knows the CMake language’s grammar. This enables CMinx to automatically extract function/macro signatures, even when functions are not documented. CMinx also integrates seamlessly into existing CMake build systems. CMinx’s output is highly customizable and easily controlled via a YAML (YAML, 2022) configuration file. CMinx has already proved to be an invaluable productivity tool in the authors’ other projects, and, given that other scientific software projects also rely heavily on source code written in CMake, we anticipate CMinx will prove invaluable to many additional projects as well. Concurrent with the submission of this manuscript, we have also released the first production version of CMinx, version 1.0.0. CMinx can be obtained from the Python Packaging Index via “pip install CMinx”. Alternatively, CMinx can be used as a CMake module via CMake’s “FetchContent” command. Despite only just releasing 1.0.0, the CMinx GitHub organization has already started to see attention and interest from developers not affiliated with the authors. We anticipate CMinx will be a useful productivity tool for the large swath of research software that uses CMake as their build system.
dc.description.comments This article is published as Butler, & Richard. (2022). CMinx: A CMake Documentation Generator. Journal of Open Source Software, 7(77), 4680. DOI: 10.21105/joss.04680. Copyright 2022 The Author(s). Attribution 4.0 International (CC BY 4.0). Posted with permission. DOE Contract Number(s): AC02-07CH11358.
dc.identifier.other 1890187
dc.identifier.uri https://dr.lib.iastate.edu/handle/20.500.12876/YvkAEMXz
dc.language.iso en
dc.publisher Iowa State University Digital Repository, Ames IA (United States)
dc.relation.ispartofseries IS-J 10902
dc.source.uri https://doi.org/10.21105/joss.04680 *
dc.subject.disciplines DegreeDisciplines::Physical Sciences and Mathematics::Computer Sciences::Software Engineering
dc.title CMinx: A CMake Documentation Generator
dc.type article
dspace.entity.type Publication
relation.isOrgUnitOfPublication 25913818-6714-4be5-89a6-f70c8facdf7e
File
Original bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
IS-J 10902.pdf
Size:
208.54 KB
Format:
Adobe Portable Document Format
Description:
Collections