[CMake] Null alias targets?

Marc CHEVRIER marc.chevrier at gmail.com
Thu Jun 14 02:49:28 EDT 2018


Starting with CMake v3.11, it is now possible to aliasing an imported
target. So you can have something like that:

if (BUILD_MY_LIB)
  add_library(my_lib SHARED ....)
  add_library(MY_NAMESPACE::mylib ALIAS my_lib)
else()
  add_library(system_lib SHARED IMPORTED GLOBAL)
  set_property(TARGET system_lib PROPERTY IMPORTED_LOCATION
/path/to/system/lib)
  add_library(MY_NAMESPACE::mylib ALIAS system_lib)
endif()

And, after you can use target MY_NAMESPACE::mylib transparently...


Le jeu. 14 juin 2018 à 06:53, Andrew White <andrew.white at audinate.com> a
écrit :

> I have a library that needs to be built on some platforms but on others is
> part of the OS.  I'd like to avoid putting "if platform" conditional code
> in the places it is used, but instead hide it away in my platform-specific
> code.
>
> One way to do this is define a variable mylib_targetname in each platform
> and add ${mylib_targetname} as a dependency.  It can be defined on some
> platforms and undefined on others.
>
> It feels cleaner if I could create an alias target MY_NAMESPACE::mylib and
> refer to that. This lets me define the dependency without making sure an
> environment variable is set, which feels more natural.  But in order to
> make this work I need a way to express that MY_NAMESPACE::mylib might be
> (legitimately) null on some platforms, and I can't figure out how to do
> this.
>
> Any ideas?
>
> --
> Andrew
>
> --
>
> Powered by 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/20180614/c680c4d6/attachment.html>


More information about the CMake mailing list