2017-12-16 6 views
2

Ich versuche, ein CMake-Paket für Crypto ++ Aufnahme in CMake-Projekte zu machen, wird dies in der noloader/cryptopp-cmake repo enden, wenn es fertig ist.Wie mache ich ein CMake-Paket?

Das ultimative Ziel ist mit einem Arbeitsplattformübergreifende FindCryptoPP.cmake Datei zu kommen, die im Quellverzeichnis ++ Crypto abgelegt werden können Dinge wie:

find_package(CryptoPP REQUIRED) 
target_link_libraries(libbiocoin cryptopp-static) 

Oder:

find_package(CryptoPP REQUIRED) 
target_link_libraries(libbiocoin cryptopp-shared) 

In eine fertige Anwendung und habe es "einfach funktionieren".

Meine aktuelle beste Lösung innerhalb einer CMake-Anwendung ist Crypto ++ für die Plattform zu bauen, das resultierende Archiv oder die Bibliothek in ein lib-Verzeichnis zu stecken, das in der CMakeLists.txt zu referenzieren und auf diese Weise zu ziehen, aber das erfordert natürlich packen eine binäre Distribution des kompilierten Crypto ++ für jede Plattform, auf die die Anwendung abzielt, was unangenehm wäre, aufrechtzuerhalten und allgemein schlecht, selbst wenn es kein Krypto-Code wäre.

Antwort

1

Es ist besser, eine CMake-Konfigurationsdatei bereitzustellen. find_package sucht nach einer Konfigurationsdatei, wenn kein FindFoo.cmake find script zur Verfügung gestellt wird. Ein Vorteil gegenüber einem Find-Skript ist, dass Sie nicht mit verschiedenen, möglicherweise widersprüchlichen Versionen des Find-Skripts enden.

Siehe https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html, speziell der Abschnitt Create Layout.