> On Sun, Feb 12, 2006 at 09:23:43PM +0100, Martin Willers wrote:
> > 
> > program: $(OBJECTS)
> >         echo "const char build_time[] = \"`date`\";" > build.c
> >         $(CC) -c build.c
> >         $(CC) -o $@ $(OBJECTS) build.o
> > 
> > However, with this approach, I have to use an explicit
> > compiler call to compile build.c - it would be nicer if I could
> > let a pattern rule force compilation of build.c.
> > 
> > Is there a better way to do this?
> 
> Wouldn't this do?
> 
>   build.c : $(OBJECTS)
>       echo "const char build_time[] = \"`date`\";" > build.c
> 
> 
>   program: $(OBJECTS) build.o
>       $(CC) -o $@ $(OBJECTS) build.o
>
no need for an intermediate file for something like that.

[EMAIL PROTECTED]:/tmp# cat Makefile
all: hello

NOW := $(shell date -u "+%Y/%m/%d %H:%M")
CFLAGS    += -DBUILDTIME='"$(NOW)"'
hello: hello.c
[EMAIL PROTECTED]:/tmp# cat hello.c
#include <stdio.h>
main(){
        printf("\n"BUILDTIME"\n");
        return 0;
}
[EMAIL PROTECTED]:/tmp# make
cc -DBUILDTIME='"2006/02/25 15:16"'    hello.c   -o hello
[EMAIL PROTECTED]:/tmp# ./hello

2006/02/25 15:16
[EMAIL PROTECTED]:/tmp#

hofrat


_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to