Verwenden der Link-Time-Optimierung von GCC mit statisch verknüpften Bibliotheken

Ich versuche, Link-Time-Optimierungen mit dem @ zu verwend-flto Flagge von GCC (6.1.1).

Während es gut mit meinem Code funktioniert, verbindet es sich nicht mit einer statisch verknüpften Bibliothek, die ich auch erstelle und mit meinem Projekt verknüpfe (das istMoto und die Bibliothek ist glsl-optimizer, nur als Referenz)

Hier ist die Ausgabe:

...
/usr/bin/ranlib: ir_expression_flattening.cpp.o: plugin needed to handle lto object
/usr/bin/ranlib: opt_function_inlining.cpp.o: plugin needed to handle lto object
/usr/bin/ranlib: opt_copy_propagation_elements.cpp.o: plugin needed to handle lto object
...

Und danach bekomme ich natürlich einige "undefinierte Referenzen" auf einige Funktionen.

Ich habe ein paar Nachforschungen angestellt und herausgefunden, dass dies an @ liegen könntar und ich sollte versuchen, @ zu verwendgcc-ar, aber ich bin mir nicht sicher, wie ich das machen soll.

Auch ich benutze CMake, das lto nicht unterstützt (außer beim Intel-Compiler auf einigen Plattformen, also lese ich ...). Obwohl ich versucht habe:

set_property(TARGET glsl_optimizer PROPERTY INTERPROCEDURAL_OPTIMIZATION True)

Was hat nicht funktioniert.

Auch habe ich versucht GCC's-fuse-linker-plugin Flagge, die nicht funktioniert hat.

Ich denke, ich muss es manuell auf die alte Weise direkt mit @ tgcc-ar, oder gibt es vielleicht eine andere Methode?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage