On Mon, Feb 20, 2012 at 11:03 AM, Andrea Crotti <[email protected]>wrote:
> On 02/20/2012 03:50 PM, David Cole wrote: > > On Mon, Feb 20, 2012 at 10:42 AM, Eric Noulard <[email protected]>wrote: > >> 2012/2/20 Andrea Crotti <[email protected]>: >> > On 02/20/2012 03:15 PM, David Cole wrote: >> > >> > >> > Use: >> > >> > COMMAND ls -l >> > >> > Not: >> > >> > COMMAND "ls -l" >> > >> > >> > Yes thanks, I started using the "" because I noticed that sometimes >> they are >> > needed. >> > So suppose I want to split the options and the command, this: >> > >> > set(myoptions one two three) >> > set(mycmd ls -l) >> > >> > message(${mycmd} ${myoptions}) >> > >> > will produce >> > ls-lonetwothree >> > >> > Which is not what I want, but with " I get even a more strange result: >> > message("${mycmd} ${myoptions}") >> > >> > ls;-l one;two;three >> > >> > and in the list command I don't see any way to simply concatenate two >> lists, >> > so how should I merge two different lists to produce a command? >> >> You may avoid to create a list in the first place: >> set(myoptions "one two three") >> instead of >> set(myoptions one two three) >> >> see >> cmake --help-command list >> >> or you can >> string(REPLACE ";" " " stringopts "${myoptions}") >> message(STATUS "${stringopts}") >> >> >> -- >> Erk >> Membre de l'April - « promouvoir et défendre le logiciel libre » - >> http://www.april.org >> > > > If you have: > > set(myoptions one two three) > set(mycmd ls -l) > > Then: > > COMMAND ${mycmd} ${myoptions} > > should give you what you expect. (Regardless of what the "message" > command's output is.) > > > > Ah yes you're probably right, I tried it and it works. > It would still be nice to understand how to pass generated lists to > COMMAND, but that's a plus for > the moment, and apparently too hard to get right.. > In add_custom_command, if you pass COMMAND some_command ${list_of_args} then each element of the list ends up as a separate argument to your command. If you pass: COMMAND some_command "${list_of_args}" then your command gets a single argument. If the list contains more than 1 element, then your argument will have semi-colons in it.
-- 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
