On Monday, November 04, 2013 10:40:15 AM Brad King wrote:
> On 11/04/2013 10:31 AM, Clinton Stimpson wrote:
> > But I see 2 others new problems.
> 
> Those are features and they work together as intended.
> 
> > 1)
> > cmake_minimum_required(VERSION 2.8)
> > add_library(foo SHARED foo.cpp)
> > add_library(bar SHARED bar.cpp)
> > target_link_libraries(bar foo)
> > set_target_properties(bar PROPERTIES LINK_INTERFACE_LIBRARIES "")
> > add_executable(exe exe.cpp)
> > target_link_libraries(exe bar)
> > 
> > With 2.8.12.1, I now get a new warning that I did not get with 2.8.12. 
> > I'm
> > not sure why I'm getting that warning because the linking of exe looks
> > correct.
> > 
> > CMake Warning (dev) in CMakeLists.txt:
> >   Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
> >   interface.  Run "cmake --help-policy CMP0022" for policy details.  Use
> >   the
> >   cmake_policy command to set the policy and suppress this warning.
> >   
> >   Target "bar" has an INTERFACE_LINK_LIBRARIES property which differs from
> >   its LINK_INTERFACE_LIBRARIES properties.
> >   
> >   INTERFACE_LINK_LIBRARIES:
> >     foo
> >   
> >   LINK_INTERFACE_LIBRARIES:
> This is a correct warning according to the definition of CMP0022.
> The bug you reported in 2.8.12.0 also caused it to not warn here.
> Prior to my fix CMake did not track the new INTERFACE_LINK_LIBRARIES
> value correctly for the plain tll signature so it didn't realize
> that things would change and therefore did not warn.
> 
> > 2)
> > cmake_minimum_required(VERSION 2.8.12)
> > add_library(foo SHARED foo.cpp)
> > add_library(bar SHARED bar.cpp)
> > target_link_libraries(bar foo)
> > set_target_properties(bar PROPERTIES LINK_INTERFACE_LIBRARIES "")
> > add_executable(exe exe.cpp)
> > target_link_libraries(exe bar)
> > 
> > I get no warning or error, but my LINK_INTERFACE_LIBRARIES property was
> > not
> > respected and it linked both foo and bar into exe.  This appears to be a
> > regression from 2.8.12 to 2.8.12.1.
> 
> This is also correct behavior.  The NEW behavior of CMP0022
> is to ignore LINK_INTERFACE_LIBRARIES and use the new
> INTERFACE_LINK_LIBRARIES which is now populated by the tll call.
> 
> The warning you get when the policy is not set is telling
> you exactly what will change when the policy is set to NEW.
> Therefore it gives you a chance to fix your code before setting
> the policy (by bumping the min req version or explicitly).
> 
> This is exactly how policies are intended to work.  It was
> very unfortunate that 2.8.12.0 was released without giving
> projects any release candidates with a correct CMP0022 impl.


Ok.  Yes, that threw me off when the cmp0022 behavior wasn't correct in 
2.8.12.0.  And I agree that it is fixed in 2.8.12.1.

Thanks,
Clint
--

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