Mesons Richtlinie zum Mischen mehrerer Build-Systeme in einem Build-Verzeichnis
Meson wurde mit dem Prinzip entworfen, dass alle Abhängigkeiten entweder von "der Plattform" über einen Mechanismus wie Pkg-Config bereitgestellt werden oder dass sie als Meson-Unterprojekte unter dem Hauptprojekt gebaut werden. Es gibt mehrere Projekte, die Build-Systeme mischen möchten, d. h. Abhängigkeiten im selben Build-Verzeichnis wie das andere Build-System bauen, indem ein Build-System das andere aufruft. Die Build-Verzeichnisse müssen nicht unbedingt ineinander verschachtelt sein, aber das ist der häufigste Fall.
Diese Seite listet die Haltung des Meson-Projekts zum Mischen von Build-Systemen auf. Die Kurzfassung (tl/dr) ist, dass wir zwar einige Funktionalitäten für diesen Anwendungsfall bereitstellen, diese aber nur für einfache Fälle funktionieren. Alles Komplexere kann nicht zuverlässig gemacht werden, und der Versuch, dies zu tun, würde die Meson-Entwickler mit einer praktisch unendlichen Wartungsbürde belasten. Daher ist nicht garantiert, dass diese Anwendungsfälle funktionieren, und selbst wenn ein Projekt, das sie verwendet, heute funktioniert, gibt es keine Garantie dafür, dass es in zukünftigen Versionen funktioniert.
Die Definition von "Build-System-Mischung"
Für die Zwecke dieser Seite bedeutet das Mischen von Build-Systemen alle Mechanismen, bei denen ein Build-System Build-Artefakte aus dem Build-Verzeichnis eines anderen Build-Systems auf irgendeine Weise verwendet.
Beachten Sie, dass diese Definition nicht spezifiziert, was die Abhängigkeiten sind und wie sie gebaut werden, sondern nur, wie sie konsumiert werden. Angenommen, Sie haben beispielsweise eine eigenständige Abhängigkeitsbibliothek, die mit dem Build-System X gebaut wird. In diesem Fall würde der Aufruf von Meson, das Build-System zum Bauen der Abhängigkeit zur Build-Zeit aufzurufen, als Mischen von Build-Systemen interpretiert werden. Auf der anderen Seite würde ein "Flatpak-ähnlicher" Ansatz, bei dem die Bibliothek mit einem externen Mechanismus gebaut und installiert und über eine standardmäßige, Build-System-agnostische Methode wie Pkg-Config konsumiert wird, nicht als Mischen von Build-Systemen betrachtet werden. Die Verwendung von uninstalled-pkgconfig-Dateien wird jedoch als Mischen betrachtet.
Was bedeutet das für Support und Kompatibilität?
Das Meson-Projekt wird keine Wartungsaufwand übernehmen, um sicherzustellen, dass etwas anderes als die oben diskutierten einfachen Build-Setups funktioniert. Wir werden auch keine Änderungen vornehmen, um diese Anwendungsfälle zu unterstützen, die die Benutzererfahrung von Nutzern von reinem Meson verschlechtern würden. Dies beinhaltet, ist aber nicht beschränkt auf, Folgendes:
-
Jegliche Änderungen an anderen Build-Systemen, die zu einem Bruch gemischter Projekte führen, werden nicht als Fehler in Meson betrachtet.
-
Brüche in gemischten Build-Projekten werden nicht als Regressionen betrachtet, und solche Probleme werden niemals als Release-Blocker angesehen, unabhängig von der zugrunde liegenden Ursache.
-
Jeder Anwendungsfall, der größere Änderungen in Meson erfordern würde, um fehlende oder fehlerhafte Funktionalitäten im anderen Build-System zu umgehen, wird nicht unterstützt. Diese Probleme müssen upstream behoben werden.
Die Ergebnisse der Suche sind