C++ Projekt -> Versionierung
Diese Anleitung beschreibt, wie Sie einem TwinCAT C++ Projekt nachträglich eine Versionierung hinzufügen.
In Fett ist im Quellcode jeweils der zu ändernde Code hinterlegt.
- C++ Projekt. Für das Beispiel wird „Untitled1“ als C++ Projektname verwendet.
Zusätzlich soll ein leeres, neues Projekt mit versioniertem C++ Projekt angelegt werden. Dieses dient als Kopiervorlage.
- 1. Öffnen Sie die Datei Untitled1.vcxproj in einem Editor.
- 2. Nehmen Sie folgende Ergänzung vor:
<PropertyGroup Label="Globals">
<ProjectGuid>{….}</ProjectGuid>
<RootNamespace>Untitled1</RootNamespace>
<Keyword>Win32Proj</Keyword>
<AutomaticRetargetPlatformVersion>true</AutomaticRetargetPlatformVersion>
</PropertyGroup>
<PropertyGroup Label="TcGeneral">
<TcGeneralUseTmx>true</TcGeneralUseTmx>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- 3. Übertragen Sie aus dem neuen Projekt die Dateien Untitled1.rc und Untitled1W32.rc in das zu migrierende Projekt; überschreiben Sie dabei die Datei Untitled1.rc.
- 4. Öffnen Sie das Projekt.
- 5. Wählen Sie unter TwinCAT UM Files -> Kontextmenü / Add Existing Items die Datei Unititled1W32.rc aus und fügen Sie sie dadurch zu dem Projekt hinzu.
- 6. Diese Datei muss nur für TwinCAT UM Plattformen gebaut werden, weswegen sie ansonsten ausgeschlossen werden sollte für den Build-Prozess. Dieses geschieht über Rechts-Klick und Eigenschaften:
- 7. Öffnen Sie den TMC Editor.
- 8. Setzen Sie den Namen der Classfactory sowie die Version auf „0.0.0.1“.
- 9. Löschen Sie unter Deployment alle Einträge.
- 10. Verändern Sie im Header Modul1.h DECLARE_IPERSIST_LIB():
public:
DECLARE_IUNKNOWN()
DECLARE_IPERSIST_LIB()
DECLARE_ITCOMOBJECT_LOCKOP()
- 11. Ergänzen Sie im Quellcode Modul1.cpp:
#pragma hdrstop
#include "Module1.h"
#include "Untitled1Version.h"
#ifdef _DEBUG
- 12. Ergänzen Sie im Quellcode Modul1.cpp:
END_INTERFACE_MAP()
IMPLEMENT_IPERSIST_LIB(CModule1, VID_Untitled1,
CID_Untitled1CModule1)
IMPLEMENT_ITCOMOBJECT(CModule1)
IMPLEMENT_ITCOMOBJECT_SETSTATE_LOCKOP2(CModule1)
- 13. Rufen Sie den Code Generator auf.
- 14. Verändern Sie in der Datei Untitled1Classfactory.cpp:
CUntitled1ClassFactory::CUntitled1ClassFactory() : CObjClassFactory()
{
TcDbgUnitSetImageName(TCDBG_UNIT_IMAGE_NAME_TMX(SRVNAME_UNTITLED1));
#if defined(TCDBG_UNIT_VERSION)
TcDbgUnitSetVersion(TCDBG_UNIT_VERSION(Untitled1));
#endif //defined(TCDBG_UNIT_VERSION)
}
- 15. Stellen Sie in den Projekteigenschaften im Tab Tc Sign die Signierung um. Schalten Sie dafür SHA1 signing aus und TwinCAT signing an; stellen Sie gleichzeitig TwinCAT-Nutzerzertifikat und Passwort bereit.
- 16. Triggern Sie den Rebuild des Projektes.
- Das Ergebnis ist ein C++ Projekt, welches eine Versionierung unterstützt.
Falls ein Modul Online-Change fähig gemacht werden soll, kann dieses durch die folgende Anleitung erreicht werden.