[CMake] ARGVx "inherited" by sub-functions?

David Cole DLRdave at aol.com
Mon Aug 3 21:49:06 EDT 2015


You could argue bug or feature depending on your point of view. (I'd lean
toward bug, as it is rather unexpected...) However, it has been that way
for quite some time, (ever since function was added?), so it may require a
new policy to fix, since some function calls from inside functions may be
accidentally depending on the current behavior.


D


On Monday, August 3, 2015, Paul Smith <paul at mad-scientist.net> wrote:

> Is this a known thing, or a bug (I'm using cmake 3.1.0):
>
> I create this CMakeLists.txt:
>
>   cmake_minimum_required(VERSION 3.1.0)
>   project(ArgTest)
>
>   function(FOO one two)
>     message(STATUS "extra args are ${ARGN}")
>     message(STATUS "third arg is ${ARGV2}")
>   endfunction()
>
>   function(BAR one)
>     FOO(${one} TWO)
>     message(STATUS "do something with ${ARGN}")
>   endfunction()
>
>   BAR(ONE N1 N2 N3 N4)
>
> Note how I invoke BAR() with 5 arguments, but BAR invokes FOO with only
> two arguments.  I would expect that the third argument ${ARGV3} would be
> empty in function FOO.
>
> However, when I run cmake on this file it shows:
>
>   -- extra args are
>   -- third arg is N2
>   -- do something with N1;N2;N3;N4
>
> So the ARGN for function FOO is correct (nothing there) but FOO has
> "inherited" the extra ARGVx arguments beyond the first two, that I
> passed to function BAR!
>
> That's rather unexpected.  Bug or feature?
>
> --
>
> 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://public.kitware.com/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150803/6780a281/attachment.html>


More information about the CMake mailing list