Re: [CMake] ARGVx inherited by sub-functions?

2015-08-03 Thread David Cole via CMake
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 p...@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

-- 

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

[CMake] ARGVx inherited by sub-functions?

2015-08-03 Thread Paul Smith
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