On 11/11/2012 01:32 PM, Stephen Kelly wrote:
> This means that if the user starts to use non-trivial content in the 
> INTERFACE_LINK_LIBRARIES content, then old behavior will be chosen (unless 
> the policy is set).

Right, so applications will not change their behavior until they
have been updated to be aware of it.  This is a feature of policies.

> That might be fine, in that the explicit act needed by the person 
> implementing the buildsystem for foo to change that is:
> 
>  set_minimum_required(VERSION 2.8.11)

The proposed policy is set in the consumer, not the producer.
They will get a warning that describes the behavior change if
the old and new interfaces produce different results.

They can choose the new behavior when available with

 if(POLICY CMPxxxx)
   cmake_policy(SET CMPxxxx NEW) # remove when min req is 2.8.11
 endif()

without otherwise requiring 2.8.11.

>> However, how do we
>> eventually stop adding the old interfaces to the export files?
> 
> It might depend on what the contents of the properties are.
[snip]
> In case non-trivial generator expressions are used, maybe we would need to 
> add:
> 
>  if (CMAKE_VERSION VERSION_LESS 2.8.11)
>     message(FATAL_ERROR "This file requires CMake 2.8.11 or later")
>  endif()
> 
> when exporting the targets.

Something like that may work.

Thanks,
-Brad
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to