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. -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