I would like to thank all of you for your suggestions. I have gathered the following (correct me if I am wrong):
- The LINK_FLAGS target property is used in cmake 2.x, the INTERFACE_LINK_LIBRARIES in cmake 3.x, the latter contains a ;-list of libraries. - The list may contain generator expressions, it is however possible to to use file(GENERATE ..) to obtain evaluate those. - In any case, the library list contains libraries having different formats (see [1]), full paths, (imported) targets, and plain names. - When Makefiles (or files for other build systems) are generated, the list is turned into -L/-l flags used by ld. This happens on the C++ side of things, the functionality is not exposed to cmake scripts. As for automatic generation of a pkg-config .pc file, there have been some inquiries ([2], [3], and [4]), the last one being rather recent. The answers point out that pkg-config files can be generated using configure_file(...), that cmake has its own (imported target) method for handling dependencies. I don't mean to be disrespectful or unappreciative of the work put into cmake (in fact I think it is a vast improvement over automake), but since there is no way to obtain the required information programatically, all users of my library have to either use cmake themselves, or use non-portable workarounds which are prone to break sooner than later. If I want to use an external tool (think setup.py) to build extensions (in-place or not), the same problem occurs. This is rather disappointing to be honest... ax487 [1] https://cmake.org/cmake/help/latest/command/target_link_libraries.html [2] https://cmake.org/pipermail/cmake/2006-August/010747.html [3] https://cmake.org/pipermail/cmake/2008-January/019533.html [4] https://cmake.org/pipermail/cmake/2018-March/067289.html On Mon, 2018-12-24 at 10:46 -0500, Robert Maynard wrote: > 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 <ax...@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 <ax...@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 -- 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