Code: Select all
MyLibDie Einschränkung:
Ich muss MyLib intern nur als vorkompilierte Binärdatei an andere Teams verteilen.
- Die Verbraucher können MyLib nicht aus dem Quellcode neu kompilieren.
- Wenn keine vorgefertigte Binärdatei vorhanden ist, die ihrer Konfiguration entspricht, muss der Prozess fehlschlagen, anstatt zu versuchen, sie zu erstellen.
- macht Bibliotheken von Drittanbietern verfügbar, z
Code: Select all
MyLibgibt seine öffentliche API (Header) ein.Code: Select all
fmt - wird mithilfe einer bestimmten Version von fmt (z. B. v9.1.0) und bestimmten Compiler-Flags in eine statische/gemeinsam genutzte Bibliothek kompiliert.
Code: Select all
MyLib - Die Consumer-App verknüpft MyLib über Conan. Conan ruft MyLib (binär) und fmt (Quelle zum Erstellen, falls nicht verfügbar oder binär) ab.
Selbst wenn ich erzwinge, dass der Verbraucher genau die gleiche Versionsnummer von fmt (v9.1.0) verwendet, mache ich mir Sorgen über geringfügige Abweichungen in der Art und Weise, wie fmt darauf erstellt wird Seite. Wenn fmt mit leicht unterschiedlichen Optionen kompiliert wird, stimmt das Speicherlayout der Typen in meinen Headern nicht mit der Binärdatei überein, die ich vorkompiliert habe. Dies kann zu einer falschen Speicherzuordnung und stillen Fehlern führen.
**Beispielszenario:
MyLib.h (Öffentlicher Header)** Dieser Header ist sowohl in meinem Bibliotheksbuild als auch im Consumer enthalten.
Code: Select all
#pragma once
#include
namespace mylib {
struct LogContext {
// The size/alignment of this member depends on how fmt was compiled.
fmt::memory_buffer buffer;
};
void process(LogContext& ctx);
}
Code: Select all
MyLibCode: Select all
fmtCode: Select all
package_idVerbraucherumgebung: Der Verbraucher fragt Conan nach
Code: Select all
MyLibCode: Select all
fmtWenn das Speicherlayout von
Code: Select all
fmt::memory_bufferCode: Select all
process()Die Funktion Code: Select all
LogContextMeine Fragen: Ist das oben Genannte eine berechtigte Sorge oder bin ich paranoid? Wie gehen andere mit einem solchen Szenario um, wenn es sich um ein berechtigtes Anliegen handelt?
Mobile version