[cmake-developers] Severe behavioural change regressions in release branch
Alex Merry
alex.merry at kde.org
Fri Oct 24 10:24:57 EDT 2014
On Friday 24 October 2014 10:20:42 Brad King wrote:
> On 10/24/2014 10:02 AM, Brad King wrote:
> > I bisected it down to:
> >
> > commit 5abfde6cb8a1ae0b2825797eab6c2e9842eb7c49
> > Author: Ben Boeckel <ben.boeckel at kitware.com>
> > Date: Wed Mar 12 14:01:45 2014 -0400
> >
> > cmDefinitions: Don't store parent lookups
> >
> > When looking up scopes, it is faster to not store the lookup locally
> > to
> > keep the maps smaller and avoid extra allocations and rebalancing.
>
> Here is a minimal standalone example:
>
> $ cat regression.cmake
> function(func var_name)
> list(APPEND ${var_name} value)
> set(${var_name} ${${var_name}} PARENT_SCOPE)
> set(${var_name} ${${var_name}} PARENT_SCOPE)
> endfunction()
> func(var)
> message(STATUS " var=[${var}]")
> func(var)
> message(STATUS " var=[${var}]")
>
> $ cmake-3.0 -P regression.cmake
> -- var=[value]
> -- var=[value;value]
>
> $ cmake-3.1 -P regression.cmake
> -- var=[value]
> -- var=[value]
>
> -Brad
Even simpler:
-------------------------------------------
cmake_minimum_required(VERSION 3.0)
project(Minimal NONE)
function(test_set)
set(blah "value2")
message(STATUS "before PARENT_SCOPE blah=${blah}")
set(blah ${blah} PARENT_SCOPE)
message(STATUS "after PARENT_SCOPE blah=${blah}")
endfunction()
set(blah value1)
test_set()
message(FATAL_ERROR "in parent scope, blah=${blah}")
------------------------------------------
With CMake master:
-- before PARENT_SCOPE blah=value2
-- after PARENT_SCOPE blah=value1
CMake Error at CMakeLists.txt:13 (message):
in parent scope, blah=value2
With CMake 3.0.2:
-- before PARENT_SCOPE blah=value2
-- after PARENT_SCOPE blah=value2
CMake Error at CMakeLists.txt:13 (message):
in parent scope, blah=value2
More information about the cmake-developers
mailing list