/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Simpelt spørgsmål om make og makefiler
Fra : Klaus Petersen


Dato : 23-03-04 19:44

Hej.

Jeg har lavet en Makefile fil til mit c/c++ projekt og den virker sådan set
også fint.

Men jeg undrer mig over, at når alle objekt filer er up-to-date - og dermed
også den eksekverbare fil - hvorfor udfører make så alligevel altid en
linking af objektfilerne?

Skal det være sådan eller er der en fejl i min Makefile?

Klaus.



 
 
Mogens Hansen (23-03-2004)
Kommentar
Fra : Mogens Hansen


Dato : 23-03-04 20:55

Klaus Petersen wrote:

[8<8<8<]
> Skal det være sådan eller er der en fejl i min Makefile?

Det lyder som en fejl i din makefil

Venlig hilsen

Mogens Hansen

Bertel Brander (23-03-2004)
Kommentar
Fra : Bertel Brander


Dato : 23-03-04 23:20

Klaus Petersen wrote:

> Hej.
>
> Skal det være sådan eller er der en fejl i min Makefile?
>

Som Mogens skriver så er det sansynligvis en fejl i din makefile,
hvis vi må se den kan der være vi kan hjælpe. Husk lige at gøre
opmærksom på hvilken make du bruger (Borland, Microsoft, gcc, ...).

/b

Klaus Petersen (24-03-2004)
Kommentar
Fra : Klaus Petersen


Dato : 24-03-04 21:17

> Som Mogens skriver så er det sansynligvis en fejl i din makefile,
> hvis vi må se den kan der være vi kan hjælpe. Husk lige at gøre
> opmærksom på hvilken make du bruger (Borland, Microsoft, gcc, ...).

Jeg bruger gcc make.

Her er den:

CXX = g++
GCC = gcc

CXXFLAGS = -Wall -g -s
LIBS =

# Output eksekverbar fil

bwhealth_output = bwhealth

# Objekt filer

bwhealth_exe_objs = main.o bwhealth.o sampler.o samplecollection.o

# main target

bwhealth_exe: $(bwhealth_exe_objs)
$(CXX) $(CXXFLAGS) -o $(bwhealth_output) $(LIBS) $(bwhealth_exe_objs)

# clean
clean:
rm -f *.o $(bwhealth_output)

#-------------------#
# Targets - Objects #
#-------------------#

main.o: main.cpp
bwhealth.o: bwhealth.cpp sampler.o
sampler.o: sampler.cpp samplecollection.o
samplecollection.o: samplecollection.cpp



Bertel Brander (24-03-2004)
Kommentar
Fra : Bertel Brander


Dato : 24-03-04 22:46

Klaus Petersen wrote:

> bwhealth_exe: $(bwhealth_exe_objs)
> $(CXX) $(CXXFLAGS) -o $(bwhealth_output) $(LIBS) $(bwhealth_exe_objs)
>

Så vidt jeg kan se er fejlen at kommandoen ikke lave target, output
fra linkeren er ikke bwhealth_exe men bwhealth, derfor vil den blive
ved med at forsøge at lave bwhealth_exe.

Du kan lave det om til:

$(bwhealth_output): $(bwhealth_exe_objs)
$(CXX) $(CXXFLAGS) -o $(bwhealth_output) $(LIBS) $(bwhealth_exe_objs)

Du kan evt. prøve at køre make med -d switchen, så fortæller den hvad
den laver og hvorfor (pipe det evt til en fil, der kommer MEGET
information), prøv at lede efter "must remake" og/eller newer i output
fra make.

/b

Klaus Petersen (28-03-2004)
Kommentar
Fra : Klaus Petersen


Dato : 28-03-04 15:24

Først og fremmest - tak for dit svar.

Dit ændringsforslag løste problemet.

> Så vidt jeg kan se er fejlen at kommandoen ikke lave target, output
> fra linkeren er ikke bwhealth_exe men bwhealth, derfor vil den blive
> ved med at forsøge at lave bwhealth_exe.

Med andre ord ... den vil skabe mit target bwhealth_exe fordi filen
bwhealth_exe ikke findes ...
Dvs. navnet på et target henviser til en fil.

Er det korrekt forstået?



Anders J. Munch (24-03-2004)
Kommentar
Fra : Anders J. Munch


Dato : 24-03-04 16:12

"Klaus Petersen" <spectual2@getTOnet.dk> wrote:
> Hej.
>
> Jeg har lavet en Makefile fil til mit c/c++ projekt og den virker sådan set
> også fint.
>
> Men jeg undrer mig over, at når alle objekt filer er up-to-date - og dermed
> også den eksekverbare fil - hvorfor udfører make så alligevel altid en
> linking af objektfilerne?
>
> Skal det være sådan eller er der en fejl i min Makefile?

Check om der er en fremdateret objektfil.

- Anders



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408183
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste