Thread View: be.comp.programming
2 messages
2 total messages
Started by Bart Vandewoestyne
Mon, 07 Feb 2005 21:18
Makefile ding
Author: Bart Vandewoestyne
Date: Mon, 07 Feb 2005 21:18
Date: Mon, 07 Feb 2005 21:18
42 lines
2181 bytes
2181 bytes
Directory-structuur is ruwweg als volgt:
/hoofddir/
/doc/
/src/
/utilities/
/measures/
/enzoverder/
Nu heb ik in hoofddir een Makefile staan die recursief make oproept in
de verschillende subdirs.
De Makefile van onder de directory measures bevat nu echter een
dependency met een file die te vinden is onder de directory utilities:
mod_discrepancy.o: mod_datatypes.o mod_discrepancy.f95
$(compiler) -c $(fortran_flags) -o $@ $^
mod_datatypes.o is de object file die normaal onder utilities te vinden
is.
Als ik make oproep krijg ik dan uiteraard:
make[2]: *** No rule to make target `mod_datatypes.o', needed by
`mod_discrepancy.o'. Stop.
Omdat ik natuurlijk in de Makefile van onder /measures/ geen rule voor
mod_datatypes.o specifieer omdat mod_datatypes.o natuurlijk iets is dat
voorkomt in de Makefile die in de 'utilities' directory staat.
Hoe worden zo'n dependencies normaal aangepakt? Ik dacht aan het zetten
van VPATH in mijn hoofddir, maar via die weg ben ik er precies ook nog
niet geraakt...
Wat is de properste manier om dit op te lossen?
Groeten,
Bart
--
"Share what you know. Learn what you don't."
Re: Makefile ding
Author: John Bokma
Date: Mon, 07 Feb 2005 23:13
Date: Mon, 07 Feb 2005 23:13
56 lines
2717 bytes
2717 bytes
Bart Vandewoestyne wrote:
> Directory-structuur is ruwweg als volgt:
>
> /hoofddir/
> /doc/
> /src/
> /utilities/
> /measures/
> /enzoverder/
>
>
> Nu heb ik in hoofddir een Makefile staan die recursief make oproept in
> de verschillende subdirs.
>
> De Makefile van onder de directory measures bevat nu echter een
> dependency met een file die te vinden is onder de directory utilities:
>
> mod_discrepancy.o: mod_datatypes.o mod_discrepancy.f95
> $(compiler) -c $(fortran_flags) -o $@ $^
>
> mod_datatypes.o is de object file die normaal onder utilities te
> vinden is.
>
> Als ik make oproep krijg ik dan uiteraard:
>
> make[2]: *** No rule to make target `mod_datatypes.o', needed by
> `mod_discrepancy.o'. Stop.
>
> Omdat ik natuurlijk in de Makefile van onder /measures/ geen rule voor
> mod_datatypes.o specifieer omdat mod_datatypes.o natuurlijk iets is
> dat voorkomt in de Makefile die in de 'utilities' directory staat.
>
> Hoe worden zo'n dependencies normaal aangepakt? Ik dacht aan het
> zetten van VPATH in mijn hoofddir, maar via die weg ben ik er precies
> ook nog niet geraakt...
>
> Wat is de properste manier om dit op te lossen?
Wat je wilt maken in measures hangt af van iets in utilities, dus ik gok
dat het netste is om een rule te maken voor mod_datatypes.o die de make
in utilities aanroept.
Je ontkomt niet aan een rule als je het netjes wilt doen, want zodra die
mod_datatypes aangepast is, wil je in measure ook alles opnieuw maken.
Een soort "nop" regel zou ik niet netjes vinden.
(Heb al erg lang niks meer gedaan met make btw)
--
John Bokma
Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads