[CMake] Installing a helper application

Michael Jackson mike.jackson at bluequartz.net
Wed Jan 5 22:22:51 EST 2011


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



More information about the CMake mailing list