tech-userlevel archive

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

bmake oddity with +=



I discovered an oddity how (b)make expands variables which have been 
assigned empty and then been added to using +=.

This Makefile (the underscores are just there to make leading blanks 
more obvious in the output):

x=
x+= foo bar

default:
        echo _${x}
        echo _${x:[1]}
        echo _${x:ts }

outputs

echo _ foo bar
_ foo bar
echo _foo
_foo
echo _foo bar
_foo bar

So x's first Element is "foo" (not " foo"), nevertheless x expands to 
" foo bar" (not "foo bar"). And explicitely asking the words to be 
separated by a space gives the expected result.

If you just assign to x (e.g. "x= foo bar"), it works as expected.

I suspect the inner workings of make are, err, interesting.


Home | Main Index | Thread Index | Old Index