On Dec 23, 2008, at 6:04, Mayuresh <[email protected]> wrote:

On 12/22/08, Mayuresh <[email protected]> wrote:
I am not able to find the right way to escape bracket in particular in
the arguments of a function. See example below:

LIST=a b c
LISTP=$(addprefix "\(", $(LIST))

all:
    echo $(LISTP)

I get the error:
makefile:2: *** unterminated call to function `addprefix': missing `)'.
Stop.

I can work around this by defining bracket as a variable and then using
it in
place of actual bracket, though it will be nicer if I could escape the
bracket directly. Can someone help?

Mayuresh.

Saying something along the lines of ...

PAREN :=(
LIST :=a b c
LISTP := $(addprefix $(PAREN), $(LIST))

all:
echo "$(LISTP)"

... is probably what you want.

1. Most special characters in GNU Make have to be parametrized and
often times $(subst)'ed in place of existing variables.


Wonder why some special characters are allowed to be escaped while some others
are not. For example, I can easily escape # like this:

LIST=a b c
LISTP=$(addprefix "\#", $(LIST))

all:
   echo $(LISTP)


2. Not inserting quotes around the echo string will result in shell
syntax failures because `(' is a delimiter in bourne shell.

Cheers,
-Garrett

It's no doubt an issue with how variables and functions are expanded. I'm sure Paul could better explain this phenomena.
HTH,
-Garrett

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

Reply via email to