On 11/14/2016 10:29 AM, Mario Werner wrote:
> I was just surprised by the scoping rules of CMake when it comes to
> function definitions and sub scopes (i.e., subdirectories). I expected
> that function definitions adhere to the same scoping rules as variables.

That would be nice behavior.

> However, as it turns out, (at least CMake 3.5.1) this is not the case.
> CMake seems to use the last definition of a function it encounters,
> independent of current scope.

Commands (builtin+functions+macros) are currently scoped globally.

> Now I am wondering if this behaviour is actually intended or if it is a
> corner case which just never surfaced before.

It just happened to be implemented that way from the beginning back in
our wild west days without much thought to scoping.  It is indeed not
documented AFAIK, but a good place to add this to the docs might be here:

 
https://cmake.org/cmake/help/v3.7/manual/cmake-language.7.html#command-definitions

It is also something that could be changed by the introduction of a
new CMake Policy, though it would be a bit of work to get right.

-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:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to