AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie muss ein makefile für ein Delphiprojekt aussehen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie muss ein makefile für ein Delphiprojekt aussehen?

Ein Thema von dragi · begonnen am 9. Jan 2006 · letzter Beitrag vom 16. Jan 2006
Antwort Antwort
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#1

Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 07:45
Hallo,

kann mir jemand hier sagen wie man makefiles für Delphi Programme macht? Ich habe zwar auf einer Seite etwas gefunden, aber derjenige macht es so:

Code:
#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
DCC = $(ROOT)\bin\dcc32.exe -RC:\Programme\Borland\BDS\3.0\lib $**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
PROJECTS = Test.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------

Test.exe: Test.dpr
  $(DCC)
Jetzt habe ich aber das Problem, das make diese Datei immer baut wenn die exe nciht da ist, aber nicht wenn sich etwas in den .pas Dateien geändert hat. ALso habe ich es so versucht:

Code:
#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
DCC = $(ROOT)\bin\dcc32.exe -RC:\Programme\Borland\BDS\3.0\lib $**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
PROJECTS = Test.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------

Test.exe: Test.dpr
  $(DCC)

Test.dpr: unit2.pas unit3.pas unit4.pas
Aber auch das funktioniert nicht. Jetzt baut er auch nur eine exe wenn die exe nciht mehr da ist, inotiert aber Änderungen an den .pas Dateien solange die exe im Verzeichniss liegt. Der Sinn von make ist doch aber, das er bei jeder Änderung an irgendeiner Datei die exe neu baut

Also habe ich versucht:

Code:
#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
DCC = $(ROOT)\bin\dcc32.exe -RC:\Programme\Borland\BDS\3.0\lib $**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
PROJECTS = Test.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------

Test.exe: Test.dpr
  $(DCC)

Test.exe: Unit2.pas unit3.pas unit4.pas
  $(DCC)
Das hat zu Folge, das jetzt immer die pas-Dateien compiliert werden, aber die exe nur gebaut wird, wenn diese nicht mehr vorhanden ist.

Wie bekomme ich es nun hin, das die exe immer gebaut wird wenn diese fehlt oder aber sich etwas in den .pas Dateien geändert hat? Ich bekomme es einfach nicht hin

Gruß

Dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#2

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 07:56
hmm lösch doch einfach vor dem compilieren die exe. dann wird sie ja auf jeden fall neu erstellt...
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 09:31
Genau das soll ja eben nicht passieren. Es soll nur eine Exe erstellt werden wenn sich etwas geändert hat. Sonst könnte ich ja einfach per Batch den dcc32 aufrufen. Aber ich soll es irgendwie hinbekommn das nur eine exe erstellt wird wenn sich etwas ändert.
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 10:20
Du solltest die beiden letzten Zeilen zusammenfassen, da es sich ja um dasselbe Ziel handelt:
Code:
Test.exe: Test.dpr Unit2.pas unit3.pas unit4.pas
  $(DCC)
Die Syntax in einem Makefile ist immer:
Code:
ZIEL: ABHÄNGIGKEITEN
  REGELN
// Nachtrag:

Macht "bcc32 -M Projekt.dpr" nicht genau das, was du willst?
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 13:47
"dcc32 -m Projekt.dpr" macht leider nicht dasgewünschte. Ändert sich eine pas Datei wird nciht neu gebaut. Nehme ich aber den Vorschlag die beiden zeilen zusammen zu fassen, habe ich das gewünschte Ergebniss aber er baut dazu noch eine Unit2.exe, unit3.exe und unit4.exe...das ist auch ziemlich doof
Das Projekt besteht später nämlich aus 40 und mehr pas Dateien!
Noch eine Idee dazu?

Gruß

Dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 13:57
Hmmmm ... probiere mal das "$**" durch "$*" zu ersetzen:
Code:
DCC = $(ROOT)\bin\dcc32.exe -RC:\Programme\Borland\BDS\3.0\lib $*
Wenn das nicht geht, dann das $(DCC) an der eigentlichen Stelle ersetzen:
Code:
Test.exe: Test.dpr Unit2.pas unit3.pas unit4.pas
  $(ROOT)\bin\dcc32.exe -RC:\Programme\Borland\BDS\3.0\lib Test.dpr
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 15:02
Wow...das ersetzen von $** durch $* in der dcc32 zeile bringt genau das gwünschte Ergebnis! Vielen Dank!!!

Aber ich versteh trotzdem nciht warum

Gruß

Dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 9. Jan 2006, 15:30
"$*" setzt die erste Abhängigkeit ein (-> Test.dpr)
"$**" setze alle Abhängigkeiten ein (-> Test.dpr Unit2.pas unit3.pas unit4.pas)

Ich hab' mal ein bisschen im Internet gesucht aber leide keine Beschreibung der Syntax für Borland Makefiles gefunden - ich weiß aber, dass damals beim BC 4.5 was dazu in der Hilfe stand...
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 16. Jan 2006, 07:12
Das habe ich nun verstanden!

Aber eine frage habe ich nun doch noch:

Code:
#------------------------------------------------------------------------------
VERSION = BWS.01
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
PROJECTS = Test.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------

Test.exe: Test.dpr test1.dcu
  dcc32 -m BAktBr32.dpr

*.dcu: *.pas
Im obigen makefile hängt die exe nun von einer DPR und einer dcu ab. Denn wenn sich in der pas zu test1.dcu etwas ändert, muß ja alles neu compiliert werden. Erst die dcu und dann die exe. Wie kann ich nun aber erreichen, das ich die dcu nicht im gleichen Verzeichniss wie die dpr liegen haben muß? Ich möchte alle Binärdateien in einem seperaten verzeichniss liegen haben. WIe mache ich das? Wenn ich in den Projektoptionen ein Unit Verzeichniss angebe, die DCUs dahin kopiere und make ausführe, meckert make das es die dcu niht finden kann. Gibt es da eine Möglichkeit?

Vielen Dank

dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Wie muss ein makefile für ein Delphiprojekt aussehen?

  Alt 16. Jan 2006, 09:28
Du kannst MAKE mit
Code:
.path.pas = .;..\units
Pfade für die Eingabedateien angeben (das funktioniert mit allen Dateien, die rechts vom Doppelpunkt angegeben werden).

Allerdings musst du DCC32 diese Pfade mit -U auch noch mitteilen.

Beispiel:
Code:
DCUPATH = ..\units
.path.pas = $(DCUPATH)
.path.dcu = $(DCUPATH)

...

Test.exe: Test.dpr test1.dcu
  dcc32 -m -U$(DCUPATH) BAktBr32.dpr
(alles ungetestet)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:58 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