[CMake] BundleUtilities

David Doria daviddoria at gmail.com
Wed Nov 17 07:52:11 EST 2010


Tyler,

You seem to be right in that I should not escape the $, but I DID need
to add "DESTINATION bin". Without it, I got a:

CMake Error at CMakeLists.txt:23 (INSTALL):
  install FILES given no DESTINATION!

This seems to work:
INSTALL(FILES "${VTK_DIR}/bin/libvtkHybrid.a" DESTINATION bin)

The package generated is 2MB, so I'm assuming it worked? How would you
test a package on a machine that DOES have the library installed and
configured?

David,

Thanks for the history. It sounds like an excellent goal (and what I
was looking for when I stumbled across it). Now we just need to ensure
people know how to use it :)

Now that I have a working version of the "manual" way (
INSTALL(FILES... ) ), I would like to convert it to the "automatic"
way (INSTALL(CODE...) )

This is the relevant line from the Qt example:

INSTALL(CODE "
    file(GLOB_RECURSE QTPLUGINS
      \"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
    include(BundleUtilities)
    fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
    " COMPONENT Runtime)

Can someone decode this? The reason I thought the Qt example was not
very general is that this line looks like it is very Qt specific
(dealing with plugins and what not).

Can you explain the syntax "line by line":

INSTALL(CODE  - start the automatic library search

file(GLOB_RECURSE - look for files
QTPLUGINS - what is this?

\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
- ???

include(BundleUtilities) - Just copy and paste this every time?

fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") - what is
fixup_bundle? What is the APPS and DIRS variable?

" COMPONENT Runtime) - What is the COMPONENT? What else would it be but Runtime?

Sorry for the lengthy email, but I think we should try to get this
ironed out so I can make some more examples :)

Thanks,

David


More information about the CMake mailing list