[CMake] ARGC != list(LENGTH ARGV) and ARGV0 != list(GET ARGV 0)
Rolf Eike Beer
eike at sf-mail.de
Fri Oct 11 02:20:14 EDT 2013
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})
ARGC=3 list(LENGTH ARGV)=3
ARGV0=a list(GET ARGV 0)=a
Eike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://www.cmake.org/pipermail/cmake/attachments/20131011/80558a75/attachment.pgp>
More information about the CMake
mailing list