[CMake] how to deprecate a target?
Bram de Greve
bram at cocamware.com
Wed Jul 4 16:08:34 EDT 2018
Hi Petr, Marc,
I guess I could generate a linker warning, it's indeed not-so-nice, but
might do the trick ...
It seems aliases are only possible on global imported targets. Mine
aren't (which is by default I guess). It's probably not a great idea to
make them global ...
Thanks for the suggestions!
Bram
On 7/2/2018 10:20, Marc CHEVRIER wrote:
> FYI: Starting with CMake 3.11, it is now possible to define an alias
> of an imported target.
>
> Le lun. 2 juil. 2018 à 09:27, Petr Kmoch <petr.kmoch at gmail.com
> <mailto:petr.kmoch at gmail.com>> a écrit :
>
> Hi Bram.
>
> Wild idea: could you also define a non-namespaced target `foo` and
> craft it such that linking against it generates a linker warning?
> Something like "Warning: symbol
> `Using_just_foo_is_deprecated_use_Foo_foo_instead` defined twice,
> ignoring weak definition."
>
> Petr
>
> On 2 July 2018 at 00:11, Bram de Greve <bram at cocamware.com
> <mailto:bram at cocamware.com>> wrote:
>
> That is unfortunate ... do you know any not-so-nice ways?
>
> So, what would you recommend here?
>
> I'm deprecating the old ways to use the Foo package (using
> Foo_LIBRARIES and Foo_INCLUDE_DIRS. You know, the cmake 2.x
> way of things). I can do that nicely with variable watches.
>
> But what about the target names? If I want to guarantee a
> seamless transition period, I should opt to keep using the
> "foo" target names. But then there's no way to "upgrade" to
> "Foo::foo" targets without breakage, since there's no
> deprecation strategy. And I can't use target aliases, since
> that is not allowed on imported targets.
>
> To answer my own question, I think the best thing is to move
> to the "Foo::foo" targets right now. There's at least one
> downstream package that will be hurt by this, but the damage
> is less than waiting for everyone to have moved to the "foo"
> target first.
>
> Best,
>
> Bram.
>
>
>
> On 6/29/2018 20:22, Robert Maynard wrote:
>
> I am not aware of a nice way to setup CMake to error out
> if a user
> links to `foo` instead of `Foo::foo`.
> On Fri, Jun 29, 2018 at 2:05 AM Bram de Greve
> <bram at cocamware.com <mailto:bram at cocamware.com>> wrote:
>
> Hi all,
>
> Consider this situation. I'm building a Foo packaged,
> to be used by a
> Bar project.
>
> Foo used to export its target as simply foo.
> Now it exports its target as Foo::foo.
>
> Bar contains this:
> add_library(bar ...)
> target_link_libraries(bar foo)
>
> This of course must now be:
> add_library(bar ...)
> target_link_libraries(bar Foo::foo)
>
> But if bar still links to the foo instead of Foo::foo,
> then CMake
> doesn't really complain. foo doesn't exist, but
> configures and
> generates just fine. Of course, you'll face strange
> build errors, from
> which it isn't immediately apparent what's causing
> this ...
>
> How can I make sure CMake will complain loudly when
> bar still links to foo?
>
> Thanks,
> Bram.
>
> --
>
> Powered by www.kitware.com <http://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:
> https://cmake.org/mailman/listinfo/cmake
>
>
> --
>
> Powered by www.kitware.com <http://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:
> https://cmake.org/mailman/listinfo/cmake
>
>
> --
>
> Powered by www.kitware.com <http://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:
> https://cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180704/e23ca30e/attachment.html>
More information about the CMake
mailing list