AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Compilieren per Kommandozeile

Ein Thema von Gruber_Hans_12345 · begonnen am 26. Feb 2007 · letzter Beitrag vom 27. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#1

Compilieren per Kommandozeile

  Alt 26. Feb 2007, 16:23
Hi

Habe gerade versucht, mein Projekt mal per Kommandozeile zu kompilieren, da ich es gerne mal automatisieren möchte, und dafür nicht jedesmal die IDE zu öffnen / Projekt zu wechseln.

Allerdings stoße ich da auf Probleme.
und zwar habe ich das problem, das mein Unit/Ressource/IncludePfad zu lange werden

Der Pfad ist jeweils 4000 zeichen lang, in einer cfg datei werden nur die ersten 1080 zeichen ca. verwendet, der rest wird anscheinend einfach abgeschnitten.
wenn ichs per Kommandozeile mit -U -I -R angebe werden zu diesem zeitpunkt ja auch alle %LIBPATH% aufgelöst, und die gesammte zeile in der Kommandozeile wird zu lange, das ein teil abgeschnitten wird.

Per ShellExecute, wird anscheinend auch ab 2000 zeichen sowas einfach 5 "Zugriff verweigert" zurückgegeben.

gibt es sonst noch irgendwelche Möglichkeiten ein projekt zu Kompilieren?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Compilieren per Kommandozeile

  Alt 26. Feb 2007, 17:22
per batch auf?

probier es mal so:
Delphi-Quellcode:
cd ..\srcpfadmitdemprojekt\

echo /$A4 > dcc32.cfg
echo /$B- >> dcc32.cfg
echo /$C- >> dcc32.cfg
echo /$D- >> dcc32.cfg
echo /$E- >> dcc32.cfg
echo /$F- >> dcc32.cfg
echo /$G+ >> dcc32.cfg
echo /$H+ >> dcc32.cfg
echo /$I+ >> dcc32.cfg
echo /$J- >> dcc32.cfg
echo /$K- >> dcc32.cfg
echo /$L- >> dcc32.cfg
echo /$M- >> dcc32.cfg
echo /$N+ >> dcc32.cfg
echo /$O- >> dcc32.cfg
echo /$P+ >> dcc32.cfg
echo /$Q- >> dcc32.cfg
echo /$R- >> dcc32.cfg
echo /$S- >> dcc32.cfg
echo /$T- >> dcc32.cfg
echo /$U+ >> dcc32.cfg
echo /$V+ >> dcc32.cfg
echo /$W- >> dcc32.cfg
echo /$X+ >> dcc32.cfg
echo /$Y- >> dcc32.cfg
echo /$Z1 >> dcc32.cfg
echo /cg >> dcc32.cfg
echo /AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;
       DbiProcs=BDE;DbiErrs=BDE; >> dcc32.cfg
echo /H+ >> dcc32.cfg
echo /W+ >> dcc32.cfg
echo /M- >> dcc32.cfg
echo /$M16384,1048576 >> dcc32.cfg
echo /B >> dcc32.cfg
echo /K$00400000 >> dcc32.cfg
rem echo -Q >> dcc32.cfg
echo /ND:\Temp\dcu >> dcc32.cfg
echo /LE >> dcc32.cfg
echo /LN >> dcc32.cfg
echo /LUvcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;
        qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;
        teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;
        inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;
        dclOffice2k;soaprtl;undweiterepackages >> dcc32.cfg
echo /I"C:\Programme\BORLAND\DELPHI6\LIB;C:\Programme\BORLAND\DELPHI6\BIN;
        C:\Programme\BORLAND\DELPHI6\IMPORTS;UNDWEITEREPFADE" >> dcc32.cfg
echo /U"C:\Programme\BORLAND\DELPHI6\LIB;C:\Programme\BORLAND\DELPHI6\BIN;
        C:\Programme\BORLAND\DELPHI6\IMPORTS;;UNDWEITEREPFADE" >> dcc32.cfg

del /q d:\output\meinprojekt.exe

rename meinprojekt.cfg meinprojekt.c

c:\programme\borland\delphi6\bin\dcc32.exe meinprojekt.dpr -E"D:\output" -DSAX_WIDESTRINGS;XML_WIDESTRINGS

rename meinprojekt.c meinprojekt.cfg

del dcc32.cfg

cd d:\wohinauchimmer\
pause
//Edit: hab mal die Zeilen gekürzt
Sven Harazim
--
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Compilieren per Kommandozeile

  Alt 26. Feb 2007, 17:24
ich habs mit einem manuell erstellten dcc32.cfg file probiert, nur das problem ist, wie schon erwähnt, das er bei den Parametern -I -U -R nur die ersten 1080 zeichen verwendet den rest verwirft er einfach ... dh. je nachdem wie ich die pfade anordne wirft er früher oder später einen fehler, das er gewisse units nicht mehr findet ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 13:26
hab mir gerade mal finalbuilder runtergeladen, um zu testen, ob die es können den dcc32 mit den langen pfaden aufzurufen, und bei denen funkt es, jetzt wäre es nur noch gut, wenn man wüsste, wie man den dcc32 aufrufen kann, ohne in die probleme zu kommen, das der aufruf zu lange wird.

Gibt es einen parameter, der einen pfad für -I -U und -R gleichzeitig angibt?

den, wenn ich für -I -R und -U jeweils den Pfad angebe, dann wird die gesamte zeile zu lange zu ausführen.
Lasse ich einen weg, dann findet er so manches .inc oder ne .res nicht mehr (und einzeln rauspicken wo die sind, möchte ich nicht)

irgendwie muß das doch gehen ...


[edit] ... .so, bin mal einen schritt weiter, mit CreateProcess akzeptiert er mir mal die 3*langen Pfade als Parameter, und kompiliert mal munter drauf los

jetzt brauch ich dann nur noch wissen, wie ich die ausgabe vom CreateProcess abfange, den Rückgabe wert auswerten kann, (ob ein Fehler aufgetreten ist).
Dann muß ich im nachhinein noch die JCL DebugInfo reinbekommen
Muß ich jetzt auch die Versioninfo händisch raufzählen? ... na mal schaun
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 13:39
Zitat von Gruber_Hans_12345:
ich habs mit einem manuell erstellten dcc32.cfg file probiert, nur das problem ist, wie schon erwähnt, das er bei den Parametern -I -U -R nur die ersten 1080 zeichen verwendet den rest verwirft er einfach ... dh. je nachdem wie ich die pfade anordne wirft er früher oder später einen fehler, das er gewisse units nicht mehr findet ...
wird %LIBPATH% u.a. in einer dcc32.cfg auch vorher auf die volle Länge aufgelöst?
Sven Harazim
--
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 13:46
nein, bei mir wird weder %LIBPATH% noch $(LIBPATH) aufgelöst, wenn ichs in der dcc32.cfg verwende, da muß ich immer den vollständig aufgelösten Pfad reinschreiben (sonst findet ers gar nicht)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 13:54
Hallo,

Mike Williams (TeamB) schreibt in diesem Thread, daß der Schalter /U in einer .cfg-Datei mehrfach auftauchen darf.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 14:08
Uff, ein Path der 4000 Zeichen Lang ist.?!
Zwangsläufig wird dann irgend wann etwas schlef laufen.

Eine meiner typischen Batchfiles zum Kompilieren per Kommandozeile schaut so aus:

Code:
@ECHO OFF

CALL _CleanUp.bat

CLS

SET APPNAME=NewDay
SET RESOURCEFILE="_resources\resources"
SET UNITDIRS=_units;_unitsEx;
SET UNITDIRS=%UNITDIRS%C:\Programme\Borland\Delphi6\Projects\MyPackages;

echo.
echo Make %APPNAME% ...
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo Create Resourcefile: %RESOURCEFILE%...
BRCC32 %RESOURCEFILE%.rc
echo.
echo.

echo Create Application: %APPNAME%...
DCC32 -$O+ -$R+ -$I+ -U"%UNITDIRS%" %APPNAME%.dpr
echo.
echo Done.

SET APPNAME=
SET RESOURCEFILE=
SET UNITDIRS=

pause
Lange Pfade vermeide ich schon wegen der übersichtlichkeit.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.438 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 14:22
also, es funktionieren beide wege
mit CreateProcess kann ich die 3 pfade ohne probs übergeben, und er compileirt
das trennen der Pfade in der dcc32.cfg funktioniert auch ohne probleme (allerdings kennt er bei mir keine $(LIBPATH) bzw löst diese nicht auf, muß alle pfad als aufgelöst reinschreiben)

ja ich weiss, pfad mit über 4000 zeichen ist viel, aber beim build, will ich, das er alles als Source Code reinkompiliert, und da haben sich mittlerweile schon ein haufen komponenten mit noch mehr Pfaden.

(Alleine die devExpress haben sich mit einer Pfadlänge von 1600 Zeichen registriert)
und mittlerweile sind es ja auch schon knapp über 2.4M Zeilen, was er da zusammen kompiliert, das dauert und beinhaltet nun mal viele units in vielen verzeichnissen ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Compilieren per Kommandozeile

  Alt 27. Feb 2007, 14:28
Schau dir mal den Installer der JCL an.
Da steckt jede Menge Know-How drin, das du für deine eigenen Zwecke anzapfen kannst.
Der Installer hat die Delphi IDE anscheinend komplett im Griff; er zeigt Fehler & Warnungen in einem Memo an, kommt mit verschiedenen parallel installierten Delphi-Versionen klar, ...
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz