help-make
[Top][All Lists]
Advanced

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

Re: @echo name1 = $(name1) does not work


From: Eric West
Subject: Re: @echo name1 = $(name1) does not work
Date: Sun, 29 Jan 2006 00:20:31 -0500
User-agent: KMail/1.9.1

On Saturday 28 January 2006 15:50, Morten Gulbrandsen wrote:
>
> make -v
> GNU Make 3.80
> Copyright (C) 2002  Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.
> There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> PARTICULAR PURPOSE.
>
>
>
> make
> cc -c -o helloworld.o helloworld.c
> cc    -o helloworld helloworld.o
>
>
>
> ####### Unexpected result #####$
>
> according to the manual
>
> http://www.gnu.org/software/make/manual/html_chapter/make_3.html#SEC13
>
> then you would expect to see this output:
>
>
>
> name1 = Makefile
> name2 = inc.mk
>
>
> cat  inc.mk
> helloworld: helloworld.o
>         cc    -o $@ $<
>
> helloworld.o: helloworld.c
>         cc -c -o $@ $<
>
> .PHONY: clean
> clean:
>         -rm -f helloworld helloworld.o
>
>
> cat Makefile
> name1 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
>
> include inc.mk
>
> name2 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
>
> all:
>         @echo name1 = $(name1)
>         @echo name2 = $(name2)
>
>
>
> what can I do ?
>
> Am I doing  something wrong or is the manual
> not up to date ?
>
>

Your include file, inc.mk contains targets. When you run make without 
out explicit targets, the first target (implicit target) in your make 
file is used. In this case, the first target due to the include 
statement is helloworld.  If you create an empty inc.mk or explicitly 
call the "all" target, ("make all") then the code will work as you 
might have expected.

  --Eric




reply via email to

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