CMaize: Simplifying inter-package modularity from the build up
- Ames Lab., and Iowa State Univ., Ames, IA (United States)
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. Further, 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.
- Research Organization:
- Ames Laboratory (AMES), Ames, IA (United States)
- Sponsoring Organization:
- USDOE National Nuclear Security Administration (NNSA); USDOE Office of Science (SC)
- Grant/Contract Number:
- AC02-07CH11358
- OSTI ID:
- 2323929
- Report Number(s):
- IS-J-11,288
- Journal Information:
- Journal of Chemical Physics, Journal Name: Journal of Chemical Physics Journal Issue: 9 Vol. 160; ISSN 0021-9606
- Publisher:
- American Institute of Physics (AIP)Copyright Statement
- Country of Publication:
- United States
- Language:
- English
Similar Records
CMinx: A CMake Documentation Generator
EMBODY(Environmental Modules Build System Software)