Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 01:41

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: make.bat
BeitragVerfasst: Sa Jan 18, 2003 18:30 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
hm... hi... hab mir n kleines batch-file zusammengefummelt um ein dutzend projekt-Binaries (*.exe, *.dll usw) mittels delphi-makefiles zu genieren...

Das Problem dabei ist ja, die delphi-make.exe von der Shell/Batch aus auf verschiedenen Rechnern zu finden (gerade wenn sich dort mehrere Sprachen auf der pladde befinden, die sich alle in %path% verewigt haben und ein eigenes make.exe-file besitzen)...
daher geht meistens ein einfaches make.exe -fmakefile.* in die Hose (bei mir zumindest)

nu dachte ich, dass das kleine Skript dem einen oder anderen vielleicht auch nützen könnte, die ähnliche Probleme haben... bzw. vorbeugen möchten...


make.bat
Code:
  1.  
  2.  
  3. :: =====================================================================================
  4.  
  5. :: file    : make.bat
  6.  
  7. :: author  : *
  8.  
  9. :: lamo    : 17th january 2003, 21:30
  10.  
  11. :: desc    : this batch-file generates the project executables
  12.  
  13. :: =====================================================================================
  14.  
  15.  
  16.  
  17. @goto _INIT
  18.  
  19.  
  20.  
  21. :_BUILD
  22.  
  23. :: -------------------------------------------------------------------------------------
  24.  
  25. :: MAKE PROJECT EXECUTABLES
  26.  
  27. :: -------------------------------------------------------------------------------------
  28.  
  29. :: "%2" is the fully qualified path of make.exe
  30.  
  31. :: -------------------------------------------------------------------------------------
  32.  
  33.  
  34.  
  35. %2make.exe -p -m -a -fmakefile.17-01-2003.d5e
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. :: -------------------------------------------------------------------------------------
  50.  
  51. :: MAKE.EXE
  52.  
  53. :: -------------------------------------------------------------------------------------
  54.  
  55. :: this tries to locate delphis make.exe for building the binaries from the makefile;
  56.  
  57. :: btw, we have to exclude other make.exe-files, e.g. located in c++ bin-directories
  58.  
  59. :: -------------------------------------------------------------------------------------
  60.  
  61. goto _BYE
  62.  
  63.  
  64.  
  65. :_INIT
  66.  
  67. @echo off
  68.  
  69. if "%1"=="--locate" goto _PREPARE_BUILD
  70.  
  71. if "%1"=="--build" goto _BUILD
  72.  
  73. make.bat --locate dcc32.exe
  74.  
  75.  
  76.  
  77. :_PREPARE_BUILD
  78.  
  79. if not exist %~dp$PATH:2make.exe goto _ERR_FILE_NOT_FOUND
  80.  
  81. make.bat --build %~dp$PATH:2
  82.  
  83.  
  84.  
  85. :_ERR_FILE_NOT_FOUND
  86.  
  87. echo error: cannot find make.exe
  88.  
  89.  
  90.  
  91. :_BYE
  92.  
  93.  



wer Ergänzungen, Verbessungen usw. hat... immer zu :)

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 18:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu,

ich weiß nich ob ich jetzt genau verstanden hab was das programm machen soll (hab auch nich soooviel ahnung vonBatch Programmierung).. aber, wenn du bestimmen willst wohin deine Programme Kompiliert werden, wieso machst du das nich mit Delphi??? :)

"Projects" -> "Options" -> "Directorys/Conditionals" -> "Output Directory"

Das was du da einstellst,da wird deine EXE Datei hinkompiliert.

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 18:53 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
gg... das ist mir durchaus bekannt...
(bei mir gehts mehr um Delphi->Ansicht->Projektverwaltung)


nur stell dir vor, du hast ein größeres Projekt mit viele einzelnen modulen/programmen in unterschiedlichen ordnern usw.
nun willste deine projektquellen veröffentlichen, jedoch ohne Binaries... (wegenst Platz und ich hab nur 56K hier zu hause... jaha...)
Die Batch und das makefile packste z.B. in den Bin ordner deines Projektes und ein klick reicht um alle Binaries aus den ganzen Projekteordnern auf einmal zu kompilieren...

derjenige, der sich dann das teil lädt und nur erstmal das Programm nutzen will... brauch sich net über die IDE die Projekte bauen lassen sondern muss lediglich auf die Batch klicken... zudem haste mehr Freiheiten... z.B. kannste verschieden Makefiles benutzen (z.B. für unterschiedliche versionen) oder andere Batches aufrufen... oder Sachen mitverarbeiten die nicht über die IDE so einfach machbar sind... z.B. beim Erstellen Dateien woanders hin kopieren, andere Compiler für die Module mit einbeziehen, verschiedene COM-Server (exe, dll) registrieren usw. usf. uvm.

das alles per hand zu machen ist für jemanden der erstmal nur das Programm verwenden will recht umständlich... die quellen hat aber dennoch wenn er mal was verändern will oder was auch immer....

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 18:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
*schaut ihn Skeptisch an* ähh.... oook... *nickt unsicher*

Ich hab nix kapiert *g*

Aber.. wieso machst du es denn mit Batch?? wieso nich mit Delphi?? (Ich meine deine Datei zum zusammenstellen, wieso bastelst du die nich mit Delphi???)

*setzt sich und verschränkt ihre arme, schaut sich dabei misstrauisch und unsicher um*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 19:39 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
hm, wie erklär ich es am besten...

vielleicht mal mit nem Spielprojekt
(da hab ich wiederum keine Ahnung... vielleicht gleicht sich das aus ;) )

Code:
  1.  
  2.  
  3. Spiel
  4.  
  5.   |
  6.  
  7.   +bin
  8.  
  9.   |  |
  10.  
  11.   |  +-- makefile.bpg
  12.  
  13.   |  +-- make.bat
  14.  
  15.   |
  16.  
  17.   |
  18.  
  19.   +--data
  20.  
  21.   +--imports
  22.  
  23.   +--lib
  24.  
  25.   +--projects
  26.  
  27.   |      |
  28.  
  29.   |      +--leveledt
  30.  
  31.   |      +--srv
  32.  
  33.   |      +--textedt
  34.  
  35.   |      +--spiel
  36.  
  37.   |      +--dll
  38.  
  39.   |      +--...
  40.  
  41.   |
  42.  
  43.   +--docs
  44.  
  45.   +--...
  46.  
  47.  



die Struktur und die Quellen haste inner Zip und via Inet, Mail etc.
veröffentlicht (keine binaries, die kannste zwar während der entwicklung
nach bin ausgeben lassen, aber in der zip gibts die aus platzgründen nicht)

jetzt lädt sich jemand die Zip ausm Netz und will das Gesamtprojekt bauen...
er brauch nur auf make.bat klicken und anschlie0end befinden sich alle
*.exe etc. (je nach makefile) in Bin bei diesem Menschen... der hat brauchte
noch net mal delphi öffnen und jedes projekt und jede dll per hand kompilieren

Bei manchen Projekten kann man da schon ein einiges falsch machen...
dort gibts dann öfters mal Textanleitungen dazu, aber die sind oft ziemlich
schlecht oder fehlerhaft... naja und der Nutzer kriegt so allmählich n Hals...

Sagen wir mal, du willst zwei Binaries von dem Projekt in Spielprojectsspiel
kompilieren lassen, eines mit debug-funktionen eines ohne...
im Projekt selbst hast du das mit Compiler-Direktiven wie {$IFDEF DEBUG} gelöst..
in der Batch kannst du gezielt beim compilieren diese Direktiven mit angeben... und ebenfalls den namen der entstehenden exe. usw.

der User müsste jetzt extra das so einstellen in der IDE und anschließen ein
zweites mal unter einem anderen Namen compilieren... das ist schon wieder
umständlich und will vermieden werden...

daher machts sone make.bat demjenigen recht einfach... und einem selbst
natürlich auch... ne Batch wird vom System interpretiert, ist sehr einfach wartbar und klein

das makefile selbst kann über Delphi oder per Hand erstellt/verändert werden...

ich hoffe das war n bissel verständlicher... :)

in meinem ersten Posting gings eigentlich weniger um das Make-Prinzip
sondern mehr um die Tatsache die richtige make.exe (aus dem Delphibin-ordner) zu finden und nicht versehentlich eine andere, z.B. von C++

wenn man nur Delphi auf der Platte hat dann geht der Aufruf mit Make.Exe auch in Ordnung, aber man kann nicht erwarten, das die Leute die das Projekt erhalten auch nur Delphi besitzen...

das Batch-skript ermittelt das richtige make.exe indem es den Pfad vom
compiler dcc32.exe erweitert lässt, den Namen weglässt und dort auch make.exe vermutet... (sollten sich jedoch mehrere Delphis auf der Fetzpladde befinden, dann wirds hier auch haarig... vielleicht sollte man anstatt nach dcc32.exe nach etwas eindeutigerem suchen. Deren Ordner muss jedoch in der %Path%-variable enthalten sein und bestandteil vom Delphi-Ordner)

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 19:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Aaaachsoo... jetzt hab ich's kapiert :)

Und hab keine ahnung was du gegen machen kannst *grinst verlegen*
Aber~~... *klopft ihm auf die schulter* du schaffst das ;)

*schlendert langsam weg und dreht sich nochmal kurz um* Sag mal... hieß es nichmal das manche *.bat - befehle unter Win2k/XP nichmehr richtig funktionieren?? *rennt hastig weg*

<span style='color:red'>[Edit]PS: Mein Post war grad das 4000te im DGL Forum!! *jubelt*[/EDIT]</span>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 18, 2003 20:00 
Offline
DGL Member

Registriert: Di Sep 17, 2002 20:37
Beiträge: 58
Zitat:
hieß es nichmal das manche *.bat - befehle unter Win2k/XP nichmehr richtig funktionieren??


naja davon weiß ich nichts, mag sein... ich weiß aber vom Gegenteil...
seit W2K gibts es spracherweiterungen (z.B. For-Schleifen) und auch Erweiterungen im Komandozeilen-Sprachschatz(dir, rd, md, pushd, popd) (die jedoch abgeschaltet werden können) ... hab aber keines davon verwendet...

bei XP, muss ich gestehen, weiß ich das nicht...
aber die Befehler im Batchdingens funzen mit hoher Wahrscheinlichkeit auch da...

achja...Gratulatione zum 4000sten :)

PS: pushd und popd sind ne praktische Sache... wers net kennt, einfach mal in der kommandozeile ausprobieren (n stack-prinzip für verz)

_________________
...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]