On Mon, 14 Apr 2008 14:59:14 +0200, Raphael Hertzog <[EMAIL PROTECTED]> said: 

--8<---------------cut here---------------start------------->8---
 1 | ifeq "$(wildcard ../include/factory++.hpp)" ""
 2 | CPPFLAGS=`pkg-config libfactory++ --cflags`
 3 | else
 4 | INCLUDE = .$(shell ln -sf ../include factory++)
 5 | CPPFLAGS = -I$(INCLUDE)
 6 | CXXFLAGS += -O0 -g
 7 | test_factory.o: $(wildcard $(INCLUDE)/factory++/*.hpp)
 8 | endif
--8<---------------cut here---------------end--------------->8---


> While stracing the whole process, you'll discover that this shell
> snippet is executed twice... the first time it creates a "factory++"
> symlink pointing to ../include and the second time a symlink named
> include inside ../include pointing to ../include.

        I can explain why it is executed twice. The commands run by
 calls to the `shell' function are run when the function calls are
 expanded. The expansion happens first on line 5: CPPFLAGS = -I$(INCLUDE)
 Then it happens on line 7:
   test_factory.o: $(wildcard $(INCLUDE)/factory++/*.hpp)

        This is because the variable is set using the recursively
 expanded method (using = ). Using a simply expanded variable (:=)
   INCLUDE := $(shell ln -sf ../include factory++)
 will expand the shell function only once.

        manoj
-- 
The reason why worry kills more people than work is that more people
worry than work.
Manoj Srivastava <[EMAIL PROTECTED]> <http://www.debian.org/~srivasta/>  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to