[CMake] installing dependents
Clinton Stimpson
clinton at elemtech.com
Mon Jul 20 13:39:39 EDT 2009
Thanks. Do you know if gp_resolve_item handles 64 and 32 bit binaries
correctly on Windows?
"dumpbin /dependents" is used and it doesn't return full paths like ldd
does on Linux, or otool on Mac.
I put both in my PATH, so I can run both 32 and 64 bit programs. I just
wanted to make sure I was getting the right .dll when I copy it into my
installation directory.
Clint
David Cole wrote:
> On Fri, Jul 17, 2009 at 6:48 PM, David Cole <david.cole at kitware.com
> <mailto:david.cole at kitware.com>> wrote:
>
> No. It's supposed to return the actual string that is referenced
> by the thing being analyzed. But you can call gp_resolve_item to
> get the full path... (There is a reason for this, although I can't
> remember what it is at the moment... If I think of it, I'll reply
> again.)
>
>
> I thought of/remembered the reason, so I'm replying again:
>
> The get_prerequisites function needs to return items exactly as they
> are referenced in the executable being analyzed such that ...... later
> on, the caller can use that string as an input to install_name_tool
> for replacing it with something like "@executable_path/...." -- if the
> item were returned resolved, then we would have to re-analyze the
> executable later to figure out which string in the otool output
> corresponds to the resolved item... (Or keep a map of them around, as
> is done in BundleUtilities...)
>
>
>
>
>
> From commentary in the middle of the get_prerequisites function:
>
> # Use the raw_item as the list entries returned by this
> function. Use the
> # gp_resolve_item function to resolve it to an actual full
> path file if
> # necessary.
> #
> set(item "${raw_item}")
>
>
> HTH,
> David
>
>
> On Fri, Jul 17, 2009 at 6:40 PM, Clinton Stimpson
> <clinton at elemtech.com <mailto:clinton at elemtech.com>> wrote:
>
>
> Is get_prerequisites() supposed to return absolute paths all
> the time?
> For example, on the Mac, I've got some frameworks in
> /Library/Frameworks that I may want to copy if they might not
> exist on other Macs. When I call get_prerequisites(), getting
> "foo.framwork/" instead of "/Library/Frameworks/foo.framework/"
>
> Clint
>
> David Cole wrote:
>
> So I would love to see a corollary to
> BundleUtilities.cmake for Mac on Windows and Linux, too.
>
> Using GetPrerequisites to gather the set of dependent
> files is obviously the first step.
>
> Then, on Windows, a function that installs all the
> dependent dlls to the same location as the executable
> would be awesome.
>
> On Linux, I guess you would have to make sure everything
> you depend on is either already installed in its install
> path, or aware of your install path, or uses
> LD_LIBRARY_PATH -- the issues here are the ones I am least
> familiar with (compared to Windows and Mac anyhow).
>
> I don't think this should ever be fully automated because
> of licensing and coyright issues. Technically, it is easy
> to gather the set of required files to make something work
> on a practical level. The issue will be: "hey, you're not
> allowed to copy *that* dll" because of such and such
> non-technical reason...
>
> Having said all this, and that I would love to see it, I
> must admit: it is not presently on the radar for any CMake
> developers as far as I know. So, as always: patches
> welcome. :-)
>
>
> HTH,
> David
>
>
> On Fri, Jul 17, 2009 at 3:05 PM, Clinton Stimpson
> <clinton at elemtech.com <mailto:clinton at elemtech.com>
> <mailto:clinton at elemtech.com
> <mailto:clinton at elemtech.com>>> wrote:
>
> So I'm using GetPrequisites.cmake to gather dependencies.
> Are there any examples, tips, etc.. for using this?
>
> With the results I'm getting back, I do a
> file(INSTALL ... ) because that's what I see in the
> cmake_installcmake file. Should it be documented?
> But these files I'm getting back are soft links to the real
> library. And the file(INSTALL ... ) just puts a
> softlink in my
> installation directory instead of a real library.
>
> Is there some higher level cmake function I should be
> calling to
> install libraries on Unix/Linux, similar to how there is
> BundleUtilties.cmake for Mac? Or ideally, is there one
> function I
> can use on all platforms to install some prerequisites?
>
> Thanks,
> Clint
>
> _______________________________________________
> Powered by www.kitware.com <http://www.kitware.com>
> <http://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 <http://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