Wir sind jetzt im Jahr 2020 und C ++ 20 kommt zusammen mit der lang erwarteten Funktion der C ++ - Module. Aber nachdem ich ein paar Vorträge über CppCon gesehen habe, finde ich, dass C ++ - Module an einem seltsamen Ort sind, insbesondere für Linux-Paketmanager (pacman, apt, emer, etc ...)
Nach dem, was ich gelernt habe, sind C ++ - Module
- Compiler abhängig
- Sie können kein von GCC in Clang erstelltes Modul verwenden
- GCC 9.1-Module funktionieren unter GCC 9.2 nicht
- Sie können viele verschiedene Versionen desselben Moduls haben
- Solange sie nicht in den gleichen Bereich exportiert werden
- Sie müssen ein Modul neu erstellen, wenn seine Abhängigkeiten aktualisiert werden
Mein Problem ist, dass in allen Rolling-Release-Distributionen Compiler ständig aktualisiert werden und der Benutzer möglicherweise einen eigenen Compiler-Build hat. Derzeit kann man einfach den Compiler aktualisieren oder auch aktualisieren libstdc++
. Bei Modulen scheint es jedoch naheliegend libstdc++
zu sein, aktualisiert zu werden, wenn der Compiler aktualisiert wird.
Wie würde der Paketmanager mit der Aktualisierung beispielsweise der STL umgehen, wenn der Compiler aktualisiert wird? Ich denke nicht, dass es möglich ist, jede Version des STL-Moduls für jede Version des Compilers zu erstellen. Der Benutzer muss auch kein eigenes STL-Modul erstellen.
quelle
Antworten:
Derzeit (10.01.202020) wird das Modulsystem eher als projektinternes Merkmal als als Ersatz für die Header- / Lib-Verteilung betrachtet. Wie Leute aus der Clang-Community vorschlagen, haben weder Clang noch Gcc noch Microsoft dies geplant, obwohl es einen Vorschlag gibt, ein compilerunabhängiges AST-Formular zu erstellen. Also raten Sie mal
ist richtig und wird noch einige Zeit still bleiben.
Als Aspekt der Paketverwaltungsplattform ist die Auflösung noch unbekannt, aber da das Modulsystem eher ein projektinternes Merkmal ist, ist der schlimmste Fall, dass der "Header / Lib" -Weg weiterhin stattfindet.
PS Ich denke , Stackoverflow ist kein guter Ort für Fragen wie diese, wenn Sie wirklich eine Antwort wünschen, fragen diese Mail - Liste.
quelle