Ich baue für mehr als zwei Dutzend Ziele aus einem Quellbaum mit normalerweise drei aktiven Zweigen mit sowohl Produktions- als auch Debug-Builds. Bis heute habe ich ein persönliches Makefile verwendet, das das Ziel definiert, das ein gemeinsames Makefile enthält, das die Kompilierflags definiert, die dann das Makefile aus einem bestimmten Quellbaum enthält. Das funktioniert, aber ich kann nicht anders, als zu denken, dass es einen besseren Weg gibt.Verwenden Sie sqlite zum Verwalten von Makefile-Build-Flags
Ich möchte eine SQLite3-Datenbank verwenden, um eine vollständige Liste der Build-Flags zu speichern und zu organisieren. Zur Kompilierzeit würde die Datenbank abgefragt werden, um Flags basierend auf Projektversion, Plattform und Entwickler/Produktion zu generieren und den Build zu starten.
Diese Datenbank wäre ein einzelner Ort, an dem ich meine aktuellen Einstellungen für alle meine Entwicklungsversionen dokumentieren und verfolgen kann. Ein Basissatz von gespeicherten Flags würde durch granularere Flags bei Version, Zielplattform überschrieben werden und dann Qualitätsstufen aufbauen.
Als Teil der Implementierung von so etwas würde ich auch eine Handvoll Shellskripte erstellen, um die Datenbank zu manipulieren und Flags zu setzen und anderen Entwicklern in meinem Labor dies leichter zu erlauben.
Wurde das schon gemacht? Gibt es Beispiele für so etwas?
Gibt es einen anderen/besseren Weg, damit umzugehen?
Zwei Dinge: * Ich kann die Makefiles des ursprünglichen Projekts nicht ändern. * Der Versuch, etwas wie Automake zu verwenden, wäre umständlich, da die erforderliche Anzahl von Flags konfigurieren würde, um eine Debugging-Ebene in einem vorhandenen Modul der Codebasis zu aktivieren.
Dies muss abgesehen von den ursprünglichen Makefile-Quellen getan werden, da das Projekt Hunderttausende von Codezeilen enthält und die Makefiles 13 Jahre Tweaks haben, die eine Konvertierung in so etwas wie autoconf niemals überleben würden. –
Whoa ... seine Slace! – dicroce
Ich kann die originalen Makefiles nicht so schreiben, stau und autoconf wird in diesem Fall nicht funktionieren –