[CMake] Gathering up required shared libraries

Clinton Stimpson clinton at elemtech.com
Tue Aug 2 15:53:32 EDT 2011


On Tuesday, August 02, 2011 01:42:47 pm Gregory Crosswhite wrote:
> On 8/2/11 9:28 AM, Clinton Stimpson wrote:
> > You shouldn't need to copy GetPrerequisites and BundleUtilities.
> > 
> > For Linux you can do:
> > set_target_properties( ... PROPERTIES INSTALL_RPATH "\$ORIGIN/../lib")
> > 
> > To get /usr/lib/ to be treated as non-system libraries, you can implement
> > gp_resolved_file_type_override()
> > to adjust that behavior.
> > See gp_item_default_embedded_path() in GetPrerequisites for more
> > information.
> > 
> > And finally, to copy the dependents into lib/ instead of bin/, you can
> > implement
> > gp_item_default_embedded_path_override()
> > to return a different path.
> > See gp_resolved_file_type() in GetPrerequisites for more information.
> 
> Okay, so that gets me *nearly* everything that I want, but my new
> problem is that on Mac OSX fixup_bundle incorrectly assumes that the
> bundle directory is where the executable is --- namely, bin/, rather
> than the installation directory --- and then complains that the
> libraries have not been copied into the bundle; if I instead pass in the
> installation directory then it complains because it isn't a ".app" dir.
> Thanks to your advice I now know to specifically look for *_override
> hooks in the BundleUtilities, but unfortunately unless I am missing
> something it looks like there are no such hooks that will let me change
> this behavior, so I will need to copy BundleUtilities and then modify
> get_dotapp_dir to return the parent of the directory of the executable
> rather than the directory of the executable itself.
> 
> Could I request that overrides be added to in BundleUtilities similar to
> the ones in GetPrerequisites so that someone facing my situation won't
> have to do this in the future?  It looks to me though like an override
> in get_dotapp_dir might suffice, and I could easily implement that
> myself by following the pattern for overrides in GetPrerequisites and
> then send you all a patch, but you all have a better sense of the big
> picture than a relative newcomer to hacking on CMake like myself so I
> would be happy for any feedback you have on this idea.  :-)
> 

On Mac, are you making a .app bundle, or are you doing a layout similar to 
Linux, with bin/, lib/ layout, or something else?

What version of CMake are you using?  There was a bug fix in 2.8.5 if not doing 
a .app bundle on Mac.

-- 
Clinton Stimpson
Elemental Technologies, Inc
Computational Simulation Software, LLC
www.csimsoft.com


More information about the CMake mailing list