How about the following two examples for a table or 2d array.
In the first one, each column can have a name too. Its like an array of
pointers in C++.
set(fruits apple orange banana)
set(animals cat dog elephant)
set(columns fruits animals)
foreach(column ${columns})
foreach(item ${${column}})
message("${column} has item ${item}")
endforeach()
endforeach()
Or if you have pairs, one fruit with one animal
set(tuples
"apple\;cat"
"orange\;dog"
"banana\;elephant"
)
foreach(pair ${tuples})
message("pair has items ${pair}")
foreach(component ${pair})
message("component = ${component}")
endforeach()
endforeach()
Both of those seem close enough to 2d array functionality using the cmake
language.
Clint
On Nov 29, 2011, at 4:28 PM, Robert Dailey wrote:
> I have created a pretty clean solution to this until there is native support
> for multi-dimensional arrays in CMake. I have attached the module, hopefully
> it will prove useful to others. Here is an example of how to use it:
>
> set( two_dee_array
> apple cat
> orange dog
> banana elephant
> )
>
> array2d_begin_loop( advanced "${two_dee_array}" 2 "fruit;animal" )
> while( advanced )
> message( "Fruit: ${fruit}" )
> message( "Animal: ${animal}" )
> array2d_advance()
> endwhile()
>
> ---------
> Robert Dailey
>
>
> On Mon, Nov 28, 2011 at 2:31 PM, Robert Dailey <[email protected]> wrote:
> Is it possible to have 2D arrays in CMake? As far as the core syntax is
> concerned, it seems like only 1D arrays are supported. So far I've had to
> work around this issue by using a flat array and skipping over elements using
> foreach() with a range and step.
>
> Any ideas? Thanks.
>
> ---------
> Robert Dailey
>
> <array2d.cmake>--
>
> 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
--
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