Hi Brad, thank you very much for the clarification and the background information!
I definitely have to scrutinize our CMake code to make sure that no additional problems are lurking in our build system. For now, I am going to file a feature request to keep track of the idea of properly scoping function and macro definitions. As soon as I have more time on my hands I may come back to it and give it try. Cheers, Mario On 2016-11-14 19:47, Brad King wrote: > 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
