Das mit den DEFINEs wollte ich wenn möglich lassen, da diese Fremdkomponente ja auch für Andere sein soll.
Vorallem da diese DEFINE einen kleinen Nachteil haben.
Der Compiler kompiliert die Dateien nicht von alleine neu, wenn man nur die DEFINEs ändert, da er an den Dateien ja keine Änderung erkennt. (man muß explizit ein Build ausführen)
Es gibt hier auch zwei Grundlegende Probleme beim Form-Designer.
- Die Komponente tut nur zur Laufzeit intern entsprechenden Code nutzen. (in meinem Fall halt der TTimer und es ist direkt ein TComponentnachfahre)
- Die Komponente wird schon im Designer jeweils unterschiedlich benötigt. (z.B. das Problem mit TColor und TAlphaColor oder bei visuellen Komponenten)
Bei ersterem kann man die selbe Komponente verwenden
und bei Zweitem muß man die Komponente bereits ableiten, da sie auch schon im Formdesigner zwei Versionen nötig sind.
Ich bin aber scon fast so weit, die Komponente doppelt zu entwickeln (TMyComponent und TMyComponentFmx), da sie eh nur sehr klein ist, aber ihre zukünftige Schwesterkomponente wird wesentlich aufwändiger.
Mein
Package hab ich nun auch zum Design
OnlyPackage deklariert ... anders geht das garnicht, da die DCUs dort natürlich nur in einer Version kompiliert enthalten sein können.
Die Ausgabepfade sind auch mit entsprechenden Parametern versehn, damit die Compiler nicht durchdrehen.
Leider kann man das Framework dort nicht als Umgebungsvariable reinbekommen, aber Platform, Config und CompilerVersion sind schonmal ein Anfang.
Code:
Project Options (DesignPackage):
DCU-Output .\_Dcu\$(Platform)_$(Config)_$(ProductVersion)
DCP-Output .\_Bpl\$(Platform)_$(ProductVersion)
BPL-Output .\_Bpl\$(Platform)_$(ProductVersion)
Project Options (EXE):
DCU-Output .\_Dcu\$(Platform)_$(Config)_$(ProductVersion)
EXE-Output .\_Bin\$(Platform)_$(Config)
PostBuildEvent COPY /Y $(PROJECTDIR)\Lib\$(Platform)\*.* .\_Bin\$(Platform)_$(Config)\
PostBuildEvent, da natürlich auch noch die entsprechenden
DLL/SO/LIB der Zielpattform mit ins Programmverzeichnis müssen.