[CMake] Installing a helper application

KC Jones kc.jones at skype.net
Thu Jan 6 10:03:59 EST 2011


Excellent approach.  Thank you.

KC Jones
kc.jones at skype.net
SkypeId: bernalkc

On Jan 6, 2011, at 5:55 AM, Ryan Pavlik wrote:

> You'll need something closer to this:
> 
> 
> add_executable(myapp MACOSX_BUNDLE [...])
> 
> find_file(helperpath [...])
> if(NOT helperpath)
> 	message(FATAL_ERROR "Need helper app!")
> endif()
> 
> install(TARGETS myapp
>    BUNDLE DESTINATION .
>    RUNTIME DESTINATION bin
> )
> 
> if(APPLE)
> 	install(PROGRAMS ${helperpath}
> 	   DESTINATION ./myapp.app/Contents/MacOS
> 	)
> else()
> 	install(PROGRAMS ${helperpath}
> 	   DESTINATION bin
> 	)
> endif()
> On Wed, Jan 5, 2011 at 9:22 PM, Michael Jackson <mike.jackson at bluequartz.net> wrote:
> Can you use "Find_File()" to get the path to the file. Then use the install(FILES ... ) command to place the file in your app bundle. Not tried any of that but it might work.
> ___________________________________________________________
> Mike Jackson                      www.bluequartz.net
> Principal Software Engineer       mike.jackson at bluequartz.net
> BlueQuartz Software               Dayton, Ohio
> 
> On Jan 5, 2011, at 9:13 PM, KC Jones wrote:
> 
> > I'm building an app on Mac, Linux, and Win.
> >
> > My application requires that a helper application, built outside of my project, be installed along with it.  On Linux and Win, its sufficient to copy the helper app to the same directory as my app.  On Mac, it needs to be copied into the bundle in the same location as my runtime, in the Contents/Macos/ bundle directory.
> >
> > I can't get the helper app to be packaged correctly on Mac.  I've tried two approaches that have come close but failed.
> >
> > First I tried adding the helper as a target, then using install(TARGETS...):
> > ----------------------------------------
> > ADD_EXECUTABLE(myapp MACOSX_BUNDLE [...])
> >
> > SET(helperpath [...])
> > SET(IMPORTED_LOCATION ${helperpath})
> > ADD_EXECUTABLE(myhelper IMPORTED)
> >
> > INSTALL(TARGETS myapp
> >    BUNDLE DESTINATION .
> >    RUNTIME DESTINATION bin
> > )
> >
> > INSTALL(TARGETS myhelper
> >    BUNDLE DESTINATION .
> >    RUNTIME DESTINATION bin
> > )
> > ----------------------------------------
> >
> > This fails in cmake with a message: "install TARGETS given target "myhelper" which does not exist in this directory."
> >
> > If  I alter the INSTALL with a fully qualified path to myhelper I get the same message, with the fully qualified myhelper path.
> >
> > Next, I tried using INSTALL(PROGRAMS...) with something like:
> > ----------------------------------------
> > ADD_EXECUTABLE(myapp MACOSX_BUNDLE [...])
> >
> > SET(helperpath [...])
> >
> > INSTALL(TARGETS myapp
> >    BUNDLE DESTINATION .
> >    RUNTIME DESTINATION bin
> > )
> >
> > INSTALL(PROGRAMS ${helperpath}/myhelper
> >    DESTINATION .
> > )
> > ----------------------------------------
> >
> > But this form PROGRAMS does not support the kind-of qualifiers (BUNDLE, RUNTIME), so helperapp gets copied next to the bundle on Mac, not into it where it needs to be.
> >
> > What am I doing wrong?
> >
> > KC Jones
> > kc.jones at skype.net
> > SkypeId: bernalkc
> >
> > _______________________________________________
> > 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
> 
> 
> 
> -- 
> Ryan Pavlik
> HCI Graduate Student
> Virtual Reality Applications Center
> Iowa State University
> 
> rpavlik at iastate.edu
> http://academic.cleardefinition.com
> Internal VRAC/HCI Site: http://tinyurl.com/rpavlik
> _______________________________________________
> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110106/fafdfc12/attachment-0001.htm>


More information about the CMake mailing list