[CMake] Tricky problem with variable, whitespace, quotes and shell

Asmodehn Shade asmodehn at gmail.com
Thu Aug 6 07:04:37 EDT 2009


Hi everyone,

Sorry if this has been answered before, but google doesnt give me anything
useful...

Lets say I have a list of source files : SOURCES holds : filea.c;fileb.c
I want to pass them to an external program ( Astyle for example ) so I need
to have a whitespace separated list

there fore I use the trick here which gives me the correct solution :
http://www.vtk.org/Wiki/CMake_FAQ#How_to_convert_a_semicolon_separated_list_to_a_whitespace_separated_string.3F

So now SPACES_SOURCES holds : "filea.c fileb.c"

however now I want to use that in a custom target  :
ADD_CUSTOM_TARGET(format ALL ${ASTYLE_EXECUTABLE} --style=ansi
${SPACES_SOURCES} VERBATIM )

Problem is that the command generated by cmake still includes the  double
quotes.
therefore : astyle --style=ansi "filea.c fileb.c" doesnt work ( expects one
file with a space in the name )

I cant even use a first shell to evaluate those because cmake would escape
the single reverse quotes :
astyle --style=ansi \` echo "filea.c fileb.c"\`
which is the exact opposite of what I want...

Any idea anyone ? I guess I must be missing something obvious here, but this
has troubled me for a while now...

Thanks a lot !

--
Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090806/3ef3e235/attachment-0001.htm>


More information about the CMake mailing list