[CMake] installing 3rd party libraries and version symlinks

Clinton Stimpson clinton at elemtech.com
Thu Sep 17 16:51:24 EDT 2009


BundleUtilities in CMake CVS works on Unix and Windows too.
That's how I package Qt with my apps.
You could copy the script and use it with your CMake 2.6 if you want.

In the past, I've used a glob to get the .so.* files and tar to copy them.

Clint

On Thursday 17 September 2009 02:45:53 pm Tyler Roscoe wrote:
> I'm trying to package all the 3rd party libraries needed by my project
> so that my project is self-contained (very handy for testing). On Unix,
> these 3rd party libraries often have version symlinks that go with them:
>
> [tylermr at alta:/3rdpartylibs/Qt/4.5.1/build/linux/release/lib]$ ls -l
> libQtCore.* -rw-r--r-- 1 build build      804 2009-06-08 21:36 libQtCore.la
> -rw-r--r-- 1 build build      781 2009-06-08 21:36 libQtCore.prl
> lrwxrwxrwx 1 build build       18 2009-06-08 21:36 libQtCore.so ->
> libQtCore.so.4.5.1 lrwxrwxrwx 1 build build       18 2009-06-08 21:36
> libQtCore.so.4 -> libQtCore.so.4.5.1 lrwxrwxrwx 1 build build       18
> 2009-06-08 21:36 libQtCore.so.4.5 -> libQtCore.so.4.5.1 -rwxr-xr-x 1 build
> build  2384464 2009-06-08 21:36 libQtCore.so.4.5.1 -rw-r--r-- 1 build build
> 20913272 2009-06-08 16:07 libQtCore.so.4.5.1.debug
>
> I can't just package libQtCore.so because the linker actually wants
> libQtCore.so.4 (and other linkers might want .so.4.5 or .so.4.5.1 or
> whatever).
>
> What is The CMake Way to recreate this hierarchy in my application's lib
> folder?
>
> Possible solutions:
>
> - Copy libQtCore*. This sucks because it pulls in extra files (the .la
>   and .prl and .debug files in my ls output above). Also, cmake -E copy
> isn't smart enough to preserve symlinks as symlinks, so I end up with 4
> copies of a 2.3M lib, which isn't very nice.
>
> - Destroy the symlinks and force my application to link against
>   libQtCore.so with no version info. This sucks because it forces me to
> change a 3rd party application in a non-standard way and it's inflexible
> and ugly.
>
> - Use a script that finds all the symlinks and recreates them in my
>   application's lib directory. This is the approach we're planning to
> use but it feels a little hacky.
>
> Thanks,
> tyler
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake



More information about the CMake mailing list