[jamming] Checking variable on a target
dean.ashton at ntlworld.com
Mon Nov 22 03:23:49 PST 2004
You're right, of course, that 'if' can work in an action - as it's the name of an executable. I tried your example line on a command prompt, and - unsurprisingly - it worked exactly as you described. However, I put it into my action as follows:
actions together piecemeal quietly WriteNeedLibs bind NEEDLIBS
if not "$(NEEDLIBS)" == "" echo $(NEEDLIBS) >> $(<:S=.rsp)
..only to find that Jam expands "$(NEEDLIBS)" (note the quotation marks) to an empty string. In order to get the comparison to work from a jamfile I have to use " $(NEEDLIBS) " and compare against " ".. which is a bit of a hack, but which works well.
Another hack that we've found is to call a different echo function that doesn't output rubbish when passed a null string..
Thanks again for the help!
> From: "Alen Ladavac" <alenl-ml at croteam.com>
> Date: 2004/11/22 Mon AM 11:58:41 GMT
> To: <jamming at perforce.com>
> Subject: Re: Re: [jamming] Checking variable on a target
> > For the first point, inside an action I'm limited to external commands
> Hm... I was looking at this piece in the original Jamfile:
> if $(NT) && $(MSVCNT)
> actions updated together piecemeal Archive
> if exist $(<) set _$(<:B)_=$(<)
> $(AR) /out:$(<) %_$(<:B)_% $(>)
> Judging that "if" is ok to use.
> Btw, with CMD.exe, del and mkdir are internal commands as well, aren't they?
> Perhaps you are looking at the wrong problem.
> > 'If', in the context in your example, can't work as you describe.
> $(NEEDLIBS) has already been expanded, causing the call to DOS 'if' to fail.
> Sorry, my bad. It should have been this:
> if not "$(LINKLIBS)"=="" echo $(LINKLIBS) >> $(<:S=.rsp)
> Notice the quotes around the left side of comparison operator. This is the
> standard trick for testing for empty string in an envvar.
> > Also, having to have the 'if' and the command on a single line tends to
> screw up the redirect to my linker response file.
> if not "foo bar"=="" echo something >>test.txt
> works ok for me.
Email provided by http://www.ntlhome.com/
More information about the jamming