[CMake] Creating relocatable packages

Pau Garcia i Quiles pgquiles at elpauer.org
Mon Oct 19 17:04:51 EDT 2015


Hello,

Use ExternalProject to build libpcap as part of your project. Make sure you
use $ORIGIN in rpath everywhere. Install your application (and your bundled
libpcap) to /opt to avoid polluting the system.

On Mon, Oct 19, 2015 at 10:37 PM, Zac Bergquist <zbergquist99 at gmail.com>
wrote:

> 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
>>
>
>
> --
>
> 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
>



-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151019/d4d2e1d8/attachment-0001.html>


More information about the CMake mailing list