NCAR / micm

A model-independent chemistry module for atmosphere models
https://ncar.github.io/micm/
Apache License 2.0
6 stars 4 forks source link

Evaluate CMakePresets.json to store machine specific settings #548

Open mwaxmonsky opened 1 month ago

mwaxmonsky commented 1 month ago

Is your feature request related to a problem? Please describe. Currently each machine requires a different configuration of modules to be loaded/unloaded which has caused lost development time debugging environments unnecessarily. CMake provides the ability to load modules natively (https://cmake.org/cmake/help/latest/module/FindEnvModules.html) and has preset files (https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html#manual:cmake-presets(7)) which can store machine specific settings.

Describe the solution you'd like Exposed configuration variables (MICM_MODULE_LOADS/MICM_MODULE_UNLOADS) which are ;-seperated lists of module names and in cmake/dependencies.cmake, we can iterate each string and load/unload the module respectively by name using env_module(load ${PARSED_MODULE}).

Then on the command line, we can have the ability to pass in the presets via cmake --preset=derecho for example which would load the variables for us without needing to pass them through manually.

Describe alternatives you've considered N\A

Additional context N\A