[CMake] Get linker flags / include directories for a library target

Robert Maynard robert.maynard at kitware.com
Mon Dec 24 10:46:56 EST 2018


That functionality exists in the C++ side of the code base and is run
during the 'generate' stage  ( CMakeLists are parsed during
'configure', than a 'generate' step is run ).

To get access to how import targets and generator expressions are
resolved you have two options.
1. You can try to use file(GENERATE but it doesn't support all the
generator expressions currently
2. You use cmake-server
(https://cmake.org/cmake/help/latest/manual/cmake-server.7.html) to
query a build directory for all this information.

On Fri, Dec 21, 2018 at 9:12 AM Unknown <ax487 at gmx.de> wrote:
>
> Hello Kai,
>
> thanks for your suggestion. I tried the property,
> but I just got "foo_linker_flags-NOTFOUND" as a
> result (I am using cmake 3.13.1 btw). The
> same goes for
>
> LINK_OPTIONS, and
> INTERFACE_LINK_OPTIONS.
>
> I tried using the INTERFACE_LINK_LIBRARIES property
> instead. The resulting list contains things I can use,
> such as /usr/lib/libz.so
>
> However, I am using another cmake imported library.
> Therefore, the list contains some libbaz::libbaz
> dependency as well.
>
> In order to get the actual list of libraries, I would
> have to also resolve these names.
>
> But this has to be done somewhere during the
> generation of the Makefiles, so that functionality
> must exist somewhere in cmake.
>
>
> On Fri, 2018-12-21 at 09:33 +0100, Kai Wolf wrote:
> > You can ask a CMake build target for its properties using
> > get_target_property().
> > For instance, to retrieve the linker flags for a given target foo,
> > you’d write:
> >
> >     get_target_prooperty(foo_linker_flags foo LINK_FLAGS)
> >
> > See [1] for a list of valid parameters.
> >
> > Greetings,
> >
> > Kai
> >
> > [1]
> > https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html#properties-on-targets
> >
> > http://kai-wolf.me
> > http://effective-cmake.com
> >
> > > Am 20.12.2018 um 23:14 schrieb Unknown <ax487 at gmx.de>:
> > >
> > > Dear community,
> > >
> > > I have been wondering on multiple occasions about how to get the
> > > linker flags (i.e. all -llib -Ldir) and include flags (-Idir)
> > > for a library (i.e. a target added to the project using
> > > add_library) within a cmake.
> > >
> > > There are many cases in which the flags are required, noticeably
> > > generating a suitable pkg-config file or creating a wrappers around
> > > C/C++ libraries.
> > >
> > > I think that it should be possible to derive the flags from
> > > some of the target properties of the library, but I don't
> > > know exactly how.
> > >
> > > Could you give me a hand?
> > >
> > > ax487
> > >
> > > --
> > >
> > > 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
>
> --
>
> 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


More information about the CMake mailing list