Most programs in the Unix world use default directories for its data that are determined at configure time before compilation. LilyPond is no exception; for example, a typical installation puts the ‘lilypond’ binary into ‘/usr/bin’ and all files specific to LilyPond into subdirectories of ‘/usr/share/lilypond/2.21.0/’ (assuming that the current version is 2.21.0).

While this approach works fine for manual compilation and platforms that come with standardized package managers, it can cause issues where such managers are not common or not used by default. Typical examples of such platforms are Windows and macOS, where users expect that application bundles can be installed anywhere.

The common solution to this problem is relocation support: Instead of using hard-coded paths to data files, locations of the necessary support files are computed at run time relative to the executed binary.

LilyPond — Usage v2.25.8 (development-branch).