On Thursday 06 August 2009, Asmodehn Shade wrote: > 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"
Yes, this is now one argument and cmake correctly escapes the space. But this is not necessary. Put the following in a CMakeLists.txt and it works: -------------- cmake_minimum_required(VERSION 2.6) set(files CMakeLists.txt CMakeLists.txt) add_custom_target(foo COMMAND cat ${files} ) ------------- By just listing whitespace separated words as arguments cmake considers these separate arguments. I.e. add_custom_target(foo COMMAND cat CMakeLists.txt CMakeLists.txt ) is considered 5 arguments to add_custom_target(), i.e. it's a list of arguments. If you just put add_custom_target(foo COMMAND cat ${files} ) files is expanded to <begin>CMakeLists.txt CMakeLists.txt<end> i.e. it results in the same. Converting a variable which holds a list to a string gives you the semicolons, i.e. the following results in only 4 arguments for add_custom_target(): add_custom_target(foo COMMAND cat "${files}" ) Here files "${files}" is expanded to: <begin>CMakeLists.txt;CMakeLists.txt<end> this gives: add_custom_target(foo COMMAND cat CMakeLists.txt;CMakeLists.txt ) That's not what you want. Now you had set files to just one string, which happened to contain whitespace, as in here: set(files "CMakeLists.txt CMakeLists.txt") If you then do add_custom_target(foo COMMAND cat ${files} ) files is expanded to <begin>"CMakeLists.txt CMakeLists.txt"<end> in order to preserve the whitespace. (That's also not what you want, just use what I showed at the top of the mail). Alex _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake