[Scons-users] problem with white space in C -D options
Tom Tanner (BLOOMBERG/ LONDON)
ttanner2 at bloomberg.net
Mon Jun 1 12:07:50 EDT 2015
no, I tried that fairly early on. It doesn't work. It's equivalent to passing -DABC="some text". It works fine like that, but it isn't what I'm trying to do
From: just.one.man at yandex.ru At: Jun 1 2015 16:51:49
To: Tom Tanner (BLOOMBERG/ LONDON), scons-users at scons.org
Subject: Re: [Scons-users] problem with white space in C -D options
Hi Tom,
Did you try the (IMHO) easiest method of dealing with white space, i.e. *not dealing* with it?
Most likely doing just
env['CPPDEFINES'] = [('ABC', 'some stuff')]
would do the trick.
Thanks,
Vasily
2015-06-01 17:18 GMT+03:00 Tom Tanner (BLOOMBERG/ LONDON) <ttanner2 at bloomberg.net>:
I've been having some fun trying to pass white space in a -D option for a C program.
The program is
#include <stdio.h>
int main() { printf( ABC ); return 0; }
This:
cc -DABC='"some stuff"' test.c
Works fine.
However, this:
env = Environment()
env['CPPDEFINES'] = [ ( 'ABC', '"some stuff"' ) ]
env.Program('test.c')
produces:
cc -o test.o -c "-DABC="some stuff"" test.c
Which fails with this:
"test.c", line 5: undefined symbol: some
I ended up with this:
env['CPPDEFINES'] = [ ( 'ABC', '\"some stuff\"' ) ]
I am not sure how to deal with this programatically as I don't really know what the
It seems to me after putting some trace in spawn there's a lot of shell quoting going at various places in scons - for instance, I get this if I add trace in subprocess_spawn
Spawn args ['cc', '-o', '"test.o"', '-c', '"-DABC=\\"some stuff\\""', '"test.c"']
That makes it hard to apply quoting generically in spawn. I tried using ParseFlags:
env.Parseflags(""" -DABC='"some stuff"' """)
Results in:
cc -o test.o -c "-DABC="some stuff"" test.c
again.
I guess when parsing the input I get I'm going to need to replace " with \\" throughout and pray but it's messy. Really I don't think there should be any of these "s until we get down to the ' '.join() in spawn. (which also means that removing the sh -c as I'd like to is going to break horribly)
_______________________________________________
Scons-users mailing list
Scons-users at scons.org
https://pairlist4.pair.net/mailman/listinfo/scons-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150601/fcead060/attachment.html>
More information about the Scons-users
mailing list