CMaize: Simplifying inter-package modularity from the build up.

J Chem Phys

Chemical and Biological Sciences, Ames National Laboratory, Ames, Iowa 50011, USA.

Published: March 2024

There is a growing desire for inter-package modularity within the chemistry software community to reuse encapsulated code units across a variety of software packages. Most comprehensive efforts at achieving inter-package modularity will quickly run afoul of a very practical problem, being able to cohesively build the modules. Writing and maintaining build systems has long been an issue for many scientific software packages that rely on compiled languages such as C/C++. The push for inter-package modularity compounds this issue by additionally requiring binary artifacts from disparate developers to interoperate at a binary level. Thankfully, the de facto build tool for C/C++, CMake, is more than capable of supporting the myriad of edge cases that complicate writing robust build systems. Unfortunately, writing and maintaining a robust CMake build system can be a laborious endeavor because CMake provides few abstractions to aid the developer. The need to significantly simplify the process of writing robust CMake-based build systems, especially in inter-package builds, motivated us to write CMaize. In addition to describing the architecture and design of CMaize, the article also demonstrates how CMaize is used in production-level software.

Download full-text PDF

Source
http://dx.doi.org/10.1063/5.0196384DOI Listing

Publication Analysis

Top Keywords

inter-package modularity
16
build systems
12
software packages
8
writing maintaining
8
writing robust
8
build
7
inter-package
5
cmaize
4
cmaize simplifying
4
simplifying inter-package
4

Similar Publications

CMaize: Simplifying inter-package modularity from the build up.

J Chem Phys

March 2024

Chemical and Biological Sciences, Ames National Laboratory, Ames, Iowa 50011, USA.

There is a growing desire for inter-package modularity within the chemistry software community to reuse encapsulated code units across a variety of software packages. Most comprehensive efforts at achieving inter-package modularity will quickly run afoul of a very practical problem, being able to cohesively build the modules. Writing and maintaining build systems has long been an issue for many scientific software packages that rely on compiled languages such as C/C++.

View Article and Find Full Text PDF

Want AI Summaries of new PubMed Abstracts delivered to your In-box?

Enter search terms and have AI summaries delivered each week - change queries or unsubscribe any time!