Skip to content

Improve Development Ergonomics #92

@olivia-banks

Description

@olivia-banks

I'm going to be writing the DEVELOPING in the upcoming bit, and it occurs to me that Epiworld, current, is not set up for how most people develop C++. I'm unsure as to how well this maps onto the type of person writing models for Epiworld, but it's worth considering how to make things easier for language servers (clangd, ccls, etc.) to work out of the box, since have become incredibly popular over the last five some-odd years.

Therefore, it's probably worth moving to a more structured repository format, and using a build-system for managing the build process like we do for epiworldR and epiworldPy. This would also make system-wide installation easier, although I'm not entirely sure how much utility there is in that.

This would require:

  • Moving the build from Makefiles to CMake/Meson (or heavily overhauling the make files)
  • Exporting compile_commands.json automatically to support LSPs (clangd, ccls, etc.)
  • Ensuring that headers can be parsed individually by LSPs without requiring strict include ordering (e.g., by adding minimal self-contained includes where needed, or by documenting the intended usage pattern clearly)
  • Clean up the structure of the repository (see epiworldpy for an example, move code out of the root, move scripts into a scripts or tools directory, et cetera)

Thoughts @gvegayon? I'm not sure how much depends on the way the current Makefiles do things.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions