[CMake] Proper way to define a list

BRM bm_witness at yahoo.com
Mon Mar 30 16:09:31 EDT 2009


That's correct - it is 1 parameter versus 3, but for a different reason.


DoStuff( a b c )

Processes each as 3 different variables to be passed, each of type and value a, b, and c respectively.


DoStuff( "a b c" )
Processes it as 1 variable - a string containing the value "a b c".

If you have the string


DoStuff( "a;b;c" )

Then that variable will be of the value "a;b;c" with literal semi-colons in it. I believe that was Bill's point.

Ben




________________________________
From: Robert Dailey <rcdailey at gmail.com>
To: Bill Hoffman <bill.hoffman at kitware.com>
Cc: cmake at cmake.org; a.neundorf-work at gmx.net
Sent: Monday, March 30, 2009 3:47:15 PM
Subject: Re: [CMake] Proper way to define a list


On Mon, Mar 30, 2009 at 2:41 PM, Bill Hoffman <bill.hoffman at kitware.com> wrote:

Alexander Neundorf wrote:

On Monday 30 March 2009, Robert Dailey wrote:

Hi,
What's the proper way to define a list? Suppose I have 3 words: Foo, Bar,
and Baz. I want these 3 strings to be in a list called Stuff. Would I do
this:

set( Stuff "Foo;Bar;Baz" )

Is this correct? 

Yes, this is identical to
set( Stuff Foo;Bar;Baz )
and also to set( Stuff  Foo Bar Baz )



Actually set(var "a;b;c") with the double quotes will create a string with literal ;'s in it...

I thought quotes were used to force whatever is inside of it to be treated as a single parameter. So for example, if I had a function called DoStuff, you could call it 2 ways:

DoStuff( a b c )
DoStuff( "a b c" )

My understanding is that the first one will send 3 parameters to DoStuff. The second will send only 1 parameter that is a list of 3 items.

Also, what if I do this:

set( Stuff foo bar;baz )

What will happen here? 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090330/5825c34e/attachment-0001.htm>


More information about the CMake mailing list