Wie Generieren Sie die Windows-DLL-Versionsverwaltung Informationen mit CMake
Ich bin mit CMake bauen eine shared-library, allerdings für die Windows-DLL muss ich die Versionierung von Informationen, wie:
- FileDescription
- FileVersion
- InternalName
- LegalCopyright
- OriginalFilename
- ProductName
- ProductVersion
So weit, alles, was ich habe sind die VERSION und SOVERSION Eigenschaften, aber diese scheinen nicht zu korrelieren, um die FileVersion Informationen, die ich erwarte.
set(LIC_TARGET MySharedLib)
add_library(${LIC_TARGET} SHARED ${SOURCES} )
SET_TARGET_PROPERTIES(${LIC_TARGET}
PROPERTIES
VERSION ${MY_PRODUCT_NUMBER}.${MY_PRODUCT_VERSION}.${MY_BUILD_NUMBER}
SOVERSION ${MY_PRODUCT_NUMBER})
Habe ich gefunden manuelle Methoden (siehe Beispiel unten) vorziehen würde, aber diese enthalten in CMake.
Helfen?
- Das Beispiel im Abschnitt "manuelle Methoden" - link fehlt eine wichtige Zeile:
#include <windows.h>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie Ihre CMake variable Werte in Verbindung mit einer version.rc.in - Datei und die configure_file Befehl.
Und dann in Ihrer CMakeLists.txt Datei:
Ich hatte dasselbe problem und haben die automatisierte version-generation für meine Projekte.
Sie benötigen drei Dateien aus github:
Steckte es in cmake-Unterverzeichnis Ihres Projekts und stellen Sie sicher, es zu CMAKE_MODULE_PATH wie:
Dann vor add_executable() oder add_library(SHARED) Ihr Ziel:
Vollständige Liste der unterstützten Ressourcen-strings finden Sie in generate_product_version.cmake.
VersionInfo.h und VersionResource.rc generiert wird, um cmake Ordner binaries. Variable VersionFilesOutputVariable halten werden, die Pfade zu diesen Dateien. Fügen Sie einfach diese Liste, um Ihr Ziel:
UPDATE: Korrigiert generate_product_version Skript Parameter aus VERSION_PATH
zu VERSION_PATCH.
Es ist sogar noch einfacher als die akzeptierte Antwort. Ist es nicht um die Transformation von input-Ressource.rc.in. Erstellen Sie einfach eine generische version.rc-Datei wie beschrieben hier und dann von Ihrem CMakeLists.txt tun Sie dies:
Dies hat den Vorteil, dass die definiert werden, sind erreichbar von Ihrem source-code, so haben Sie programmatischen Zugriff auf Ihre version.