help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: creating directories through dependency


From: Danny Boelens
Subject: Re: creating directories through dependency
Date: Tue, 9 Jan 2007 09:28:24 +0100

----- Original Message ----- 
From: "Michal Nowikowski" <address@hidden>
To: <address@hidden>
Sent: Tuesday, January 09, 2007 8:45 AM
Subject: creating directories through dependency


> Hello
>
> I have a problem of chicken-and-egg type. Makefile:
> ---
> BUILDDIR=build
>
> $(BUILDDIR):
>    mkdir -p $(BUILDDIR)
>
> $(objs):%.o:%.c $(BUILDDIR)
>    $(CC) -c $< -o $(BUILDDIR)/$@
> ---
>
> In this situation BUILDDIR is created before sources are compiled.
> But when everything is compiled and I re-run make it tries to recompile
> some source files because make claims that BUILDDIR is newer then
> some object files. It is like that because BUILDDIR had been changing when
> new object file were generated and put into it.

Indeed, when you add files to a directory its modification date/time is
updated. And that's exactly what GNU Make is using to determine if a file
has changed...

> How to solve this problem i.e. avoid recompiling files during subsequent
> make run?

You can solve this problem with order-only prerequisites (note the '|'
character):
$(objs):%.o:%.c | $(BUILDDIR)
    $(CC) -c $< -o $(BUILDDIR)/$@

See 4.3 "Types of Prerequisites" in the GNU Make documentation for more
documentation.

Hope this helps,
Danny





reply via email to

[Prev in Thread] Current Thread [Next in Thread]