Kann ich eine gemeinsam genutzte importierte Bibliothek installieren?

8

Ich habe ein externes Projekt und eine importierte gemeinsame Bibliothek. Die include-Verzeichnisse und implib funktionieren alle korrekt, aber der Versuch, die shared library (dll) zu installieren, schlägt mit dem folgenden Fehler fehl:

%Vor%

Hier ist Code zu reproduzieren:

%Vor%

Irgendwelche Ideen?

BEARBEITEN: Im Moment habe ich dieses Problem gelöst, indem ich get_property benutzt habe, um die IMPORTED_LOCATION herauszuziehen, dann INSTALL FILES zu verwenden und den Wert dieser Eigenschaft anzugeben. Es scheint zu funktionieren, aber gibt es eine bessere, idiomatische-cmake-Lösung?

    
Jeff M 16.12.2016, 00:07
quelle

1 Antwort

6

CMake erlaubt keine IMPORTIERTEN Bibliotheken als TARGETS zu installieren. Verwenden Sie stattdessen install(FILES) .

Für dieses Verhalten gibt es mindestens zwei Gründe:

  1. Einstellung eines CMake-Entwicklers aus dem Fehlerbericht

      

    Importierte Ziele wurden ursprünglich für den Import aus einer vorhandenen Installation eines externen Pakets entwickelt, sodass die Installation zu diesem Zeitpunkt nicht sinnvoll war.

  2. Wenn Sie normale -Bibliothek installieren, kann CMake diese ändern, um einige Eigenschaften wie RPATH anzupassen. Eine solche Änderung ist möglich, weil CMake weiß, wie die Bibliothek erstellt wurde . Dies ist ein Hauptvorteil der Installation der Bibliothek als TARGET .

    Aber für die IMPORTIERTE -Bibliothek hat CMake keine Informationen über den Kompilierungsprozess der Bibliothek und kann keine sinnvolle Änderung daran vornehmen. Daher kann CMake die Bibliotheksdatei nur wie folgt installieren: kein Vorteil gegenüber dem einfachen install(FILES) .

Tsyvarev 16.12.2016 07:52
quelle

Tags und Links