[cmake-developers] real functions (was: $LIST_LENGTH{} syntax)

Marc CHEVRIER marc.chevrier at gmail.com
Tue Jan 22 10:55:53 EST 2019


I am not convince that the proposed syntax is a good idea because it introduce a new syntax just to solve one action on a list.

What about introducing a syntax similar to the version comparison:

• LENGTH_EQUAL
• LENGTH_GREATER
• LENGTH_LOWER
• etc…

To use it:
if (my_list LENGTH_EQUAL 1)
  # do my stuff
endif()

Or introduce a more general syntax for list management as part of an expression:
$LIST{<op>,<list>[,<arg>,…]}

Where <op>, <list> and <arg> use same semantic as list command.
To use it:
of ($LIST{LENGTH,my_list} EQUAL 1)
  # do my stuff
endif()

The advantage of this syntax is extensibility: More <op> can be added and more commands can be introduced (for example $STRING{…}).

Le 22 janv. 2019 à 16:37 +0100, Brad King via cmake-developers <cmake-developers at cmake.org>, a écrit :
> On 1/22/19 10:28 AM, Torsten at Robitzki.de wrote:
> > With `$CACHE{VAR}` and `$ENV{VAR}` we already have the syntax for calling a „function“.
>
> No, there is no obvious way to pass arguments, handle nested quoting, etc.
> The language was not designed for that. That is a big can of worms I'd rather
> not open just to solve the list length problem which is already only 2 lines.
>
> > Once we have this, it would be possible to define $LIST_LENGTH in the CMake language
>
> Not as efficiently as a dedicated syntax for the only language construct
> we have that resembles a data structure.
>
> -Brad
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake-developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20190122/b5c4e171/attachment.html>


More information about the cmake-developers mailing list