[CMake] Creating relocatable packages

Zac Bergquist zbergquist99 at gmail.com
Mon Oct 19 16:37:02 EDT 2015


Thank you for your reply, Guillaume.

I understand that this is the expected behavior.  I even linked to the
documentation that says this is the expected behavior.  What I don't
understand is how to resolve it.  Are you saying it is not possible to
create a relocatable package unless all dependencies are also using CMake?
That doesn't seem right.

Should I be trying to write a package config file for libpcap, or is there
a better way to approach this?

On Sat, Oct 17, 2015 at 8:19 AM, Guillaume Dumont <
dumont.guillaume at gmail.com> wrote:

> What you are seeing is the expected behavior. You can get a relocatable
> package if all your dependencies (in your case libcap) have themselves
> relocatable package config files with exported targets. Then you package
> should make use of find_dependency macro.
>
> On Fri, Oct 16, 2015 at 4:56 PM, Zac Bergquist <zbergquist99 at gmail.com>
> wrote:
>
>> I've created a sample project to replicate my issue in hopes that it
>> would make it easier to troubleshoot.
>>
>> Thanks for any help,
>> Zac
>>
>> https://github.com/zmb3/cmaketest
>>
>> On Mon, Oct 12, 2015 at 8:53 AM, Zac Bergquist <zbergquist99 at gmail.com>
>> wrote:
>>
>>> Hello,
>>>
>>> I'm trying to fix a project so that its output is relocatable.  The
>>> project is a library that itself depends on libpcap.  My goal is to be able
>>> to import the library into my CMake application and have CMake
>>> automatically link libpcap with it.
>>>
>>> I'm using a toolchain file that invokes an ARM cross compiler, sets
>>> CMAKE_INSTALL_PREFIX and appends it to CMAKE_FIND_ROOT_PATH.  This all
>>> seems to work well.
>>>
>>> What I'm seeing is that the exported files that get installed to
>>> CMAKE_INSTALL_PREFIX contain absolute paths to libpcap on my machine, which
>>> make them useless to other team members.
>>>
>>> The first thing I changed was to use CONFIGURE_PACKAGE_CONFIG_FILE
>>> instead of CONFIGURE_FILE.  This got rid of absolute paths in the generated
>>> CMake config file.
>>>
>>> However, I still have absolute paths in the CMake target import file
>>> that gets generated.  The IMPORTED_LINK_INTERFACE_LIBRARIES target property
>>> has an absolute path instead of one relative to CMAKE_INSTALL_PREFIX.
>>>
>>> I've read the "Creating Relocatable Packages" [1] section of the CMake
>>> packages documentation. I'm pretty sure this is what I'm running into, but
>>> I don't quite understand how to solve it.  The documentation says that I
>>> should be using imported targets, but I'm not sure how to do so.  The
>>> library is just using its own FindPCAP.cmake file to locate libpcap.
>>>
>>> Does anyone know of an example of a CMake package that imports other
>>> libraries?  I could also try to create a minimal example project with this
>>> setup if it would be helpful.
>>>
>>> Thanks,
>>> Zac
>>>
>>> [1]:
>>> https://cmake.org/cmake/help/v3.3/manual/cmake-packages.7.html#creating-relocatable-packages
>>>
>>>
>>
>> --
>>
>> 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:
>> http://public.kitware.com/mailman/listinfo/cmake
>>
>
>
>
> --
> Guillaume Dumont
> =========================
> dumont.guillaume at gmail.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151019/85de6920/attachment.html>


More information about the CMake mailing list