[CMake] ARGC != list(LENGTH ARGV) and ARGV0 != list(GET ARGV 0)

Clark WANG dearvoid at gmail.com
Fri Oct 11 02:49:18 EDT 2013


On Fri, Oct 11, 2013 at 2:20 PM, Rolf Eike Beer <eike at sf-mail.de> wrote:

> Am Freitag, 11. Oktober 2013, 12:07:58 schrieb Clark WANG:
> > See following example:
> >
> >     $ cmake --version
> >     cmake version 2.8.11.2
> >     $ cat CMakeLists.txt
> >     cmake_minimum_required(VERSION 2.8)
> >
> >     FUNCTION(foo)
> >         list(LENGTH ARGV argc)
> >         message("ARGC=${ARGC} list(LENGTH ARGV)=${argc}")
> >
> >         list(GET ARGV 0 argv0)
> >         message("ARGV0=${ARGV0} list(GET ARGV 0)=${argv0}")
> >     ENDFUNCTION()
> >
> >     foo("a;b;c")
> >     $ cmake .
> >     ARGC=1 list(LENGTH ARGV)=3
> >     ARGV0=a;b;c list(GET ARGV 0)=a
> >     -- Configuring done
> >     -- Generating done
> >     -- Build files have been written to: /root/tmp
> >     $
> >
> > I know ';' is special in cmake but it's counter-intuitive that ARGC !=
> > list(LENGTH ARGV). Is this a bug?
>
> CMake will not expand a string into a list when passed as arguments. It
> would
> do when using a variable:
>
>     set(foovar "a;b;c")
>     foo(${foovar})
>

It's not quite about using a variable or not. For your example,
foo("${foovar}") would give the same result as mine.

>
> ARGC=3 list(LENGTH ARGV)=3
> ARGV0=a list(GET ARGV 0)=a
>
> Eike
> --
>
> 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:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20131011/c42dfee3/attachment.htm>


More information about the CMake mailing list