Build system and dependenies for cross-platform projects

Hi all,

I’m curious if there is a set of best practices and/or tools that can be used for dependency management in cross-platform projects. Namely, fulfilling these needs for a team of developers working on an OF project:

  1. Declaratively defining a project’s dependencies, ranging from external C++ libraries to OF add-ons and a specific version of OF itself.
  2. Installing these dependencies in a cross-platform, automated way that doesn’t depend on a global environment (e.g. previously installed version of OF)
  3. Writing tests and running them as part of the build, which would enable continuous integration of OF projects

Searching for existing solutions, I found this excellent article by @anselan that describes a lot of the issues I’ve seen with trying to optimize the development process for an OF project. I come from an “enterprise” programming background where there are excellent tools that solve these problems effortlessly such as Gradle, NPM, Cargo, etc, but couldn’t find anything for OF projects (never mind C++ projects in general). As much as I’d love to use Rust, thousands of existing projects already use OF and many more will too, and we can’t simply rewrite them.

I’d like to come up with a set of best practices and write tools to help implement them. My first idea was to just write bash scripts that download/install a project’s dependencies, but this would not be cross-platform. I would be more than happy to help write documentation and code based on what kinds of problems people are facing and solving.

1 Like