[CMake] Adding dylib with either @rpath or absolute paths to osx cmd line executable target

Clinton Stimpson clinton at elemtech.com
Tue Feb 19 12:57:03 EST 2013


If you compile libiomp5 yourself with CMake, you can set the INSTALL_NAME_DIR 
target property and have CMake put that @rpath in for you instead of a post 
build rule running install_name_tool.

Clint

On Tuesday, February 19, 2013 09:03:57 AM Bart Nabbe wrote:
> That is precisely what I ended up doing. A per target post build rule that
> runs install_name_tool. With all cmake's wizardry, I sorta figured somebody
> must have thought about this already ;)
> 
> Thanks for the tip, I feel better now that I did not overlook something!
> 
> On Feb 19, 2013, at 8:58, Clinton Stimpson wrote:
> > Have you looked at using "install_name_tool -id" to change the id of the
> > shared library.
> > 
> > If you do install_name_tool -id @rpath/libiomp5.dylib
> > /path/to/libiomp5.dylib
> > 
> > Then when you link dylibLinkTest and then check it with otool -L, it will
> > already have "@rpath/libiomp5.dylib" instead of just a plain
> > "libiomp5.dylib" With that, there will be no need to constantly fix your
> > executables with install_name_tool each time you link.
> > 
> > BundleUtilities pulls all the dependencies into a bundle and uses
> > @executable_path.  BundleUtilities does not support @rpath, except that it
> > is recognized and changed to @executable_path.
> > 
> > Clint
> > 
> > On Friday, February 15, 2013 06:57:35 PM Bart Nabbe wrote:
> >> Hi,
> >> 
> >> I'm sure I just overlooked something, but I can not get shared libraries
> >> (at a non system location) to load properly at runtime after having had
> >> them linked properly. If I run otool -L the library is listed without
> >> any path>> 
> >> or loader reference: dylibLinkTest:
> >> 	libiomp5.dylib (compatibility version 5.0.0, current version 5.0.0)
> >> 	libtbb.dylib (compatibility version 0.0.0, current version 0.0.0)
> >> 	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version
> >> 
> >> 159.1.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current
> >> version 52.0.0)
> >> 
> >> 
> >> I can use the install_name_tool to change these to @rpath/libiomp5.dylib
> >> and @rpath/libtbb.dylib respectively and all is well (I set rpath with a
> >> linker option in my CMakeLists.txt). From searching I did learn about
> >> the BundleUtilities, but I'm not quite sure how I would use it or if it
> >> would really be suitable to solve the problem.
> >> 
> >> Any suggestions would be greatly appreciated.
> >> 
> >> 
> >> Thanks,
> >> 
> >> Bart
> >> 
> >> --
> >> 
> >> 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
> 
> --
> 
> 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
-- 
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com


More information about the CMake mailing list