[CMake] OS X Application plist configuration questions

Michael Jackson mike.jackson at bluequartz.net
Thu Feb 10 15:38:01 EST 2011


That is great news. Seems I was not keeping up with how things are preferred to be done. I'll update my "cmp" project to use target properties which will fix a whole slew of my own projects. Thanks for the help tracking this down. 

___________________________________________________________
Mike Jackson                      www.bluequartz.net
Principal Software Engineer       mike.jackson at bluequartz.net 
BlueQuartz Software               Dayton, Ohio

On Feb 10, 2011, at 3:30 PM, David Cole wrote:

> Yes.... I just reproduced this with the CMake test "BundleTest" by modifying it like so:
> 
> function(hide_var)
> SET(MACOSX_BUNDLE_INFO_STRING "bundle_info_string")
> ADD_EXECUTABLE(BundleTest
>   MACOSX_BUNDLE
>   BundleTest.cxx
>   SomeRandomFile.txt
>   "${BundleTest_SOURCE_DIR}/../../ChangeLog.txt"
>   "${CMAKE_CURRENT_BINARY_DIR}/randomResourceFile.plist"
>   )
> TARGET_LINK_LIBRARIES(BundleTest BundleTestLib)
> endfunction()
> 
> hide_var()
> 
> So... the bottom line is that the MACOSX_BUNDLE_* as *variables* have to be defined at directory scope in order to work like they're supposed to with the automatically configured Info.plist file. However, there is another (preferred) way to do this. Set the same names as target properties *after* the add_executable call. Then the variable scoping does not matter.
> 
> These are not documented either in --help-variable-list or --help-property-list .... I had to go to the source code to figure this out. However, the one that is documented, MACOSX_BUNDLE_INFO_PLIST, references the MACOSX_BUNDLE_* values as target properties:
> 
>   http://cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:MACOSX_BUNDLE_INFO_PLIST
> 
> This is not a bug that we will fix (other than possibly adding better documentation at some point) -- but please use the target properties and not the variables from now on. It's been that way since at least CMake 2.6.something...
> 
> 
> Thanks,
> David
> 
> 
> On Thu, Feb 10, 2011 at 3:04 PM, Michael Jackson <mike.jackson at bluequartz.net> wrote:
> Instructions to reproduce:
> 
> Pull the sample Qt Project from the CMake wiki
> 
> http://www.cmake.org/Wiki/images/2/25/QtTest-Package-Example.zip
> 
> Unzip it
> cd into it.
> 
> Replace the CMakeLists.txt file with the one attached to this email.
> 
> run the following:
> 
> git clone git://scm.bluequartz.net/support-libraries/cmp.git
> 
> configure the project.
> 
> Note how the plist is NOT filled in correct. Edit the CMakeLists.txt file at line 137 to make cmake go into the "if()" statement. Reconfigure. Note how the plist has all the "correct" values now.
> 
> The functions and macros you want to look at are in QtTest/cmp/cmpCMakeMacros.cmake.
> ___________________________________________________________
> Mike Jackson                      www.bluequartz.net
> 
> 
> 
> 
> On Feb 10, 2011, at 2:39 PM, David Cole wrote:
> 
> > Can you share your source code so I can repro the issue here?
> >
> > Thx,
> > David
> >
> >
> > On Thu, Feb 10, 2011 at 2:25 PM, Michael Jackson <mike.jackson at bluequartz.net> wrote:
> >
> > On Feb 10, 2011, at 2:04 PM, David Cole wrote:
> >
> > > On Thu, Feb 10, 2011 at 1:51 PM, Bill Hoffman <bill.hoffman at kitware.com> wrote:
> > > On 2/10/2011 1:27 PM, Michael Jackson wrote:
> > > Bump?
> > >
> > > Did you try cmake --trace to see when it was configure...
> > >
> > >
> > > --
> > > Mike Jackson<www.bluequartz.net>
> > >
> > > On Feb 8, 2011, at 5:36 PM, Michael Jackson wrote:
> > >
> > > At what point is the MacOSXBundleInfo.plist.in configured? I am setting all the relevant variables but they are not getting inserted into the plist.
> > >
> > > Here is some debug output from a CMake run of my project:
> > >
> > > -- MACOSX_BUNDLE_INFO_STRING: StatsGenerator_debug Version 2011.02.08, Copyright 2009 BlueQuartz Software.
> > > -- MACOSX_BUNDLE_ICON_FILE: StatsGenerator.icns
> > > -- MACOSX_BUNDLE_GUI_IDENTIFIER: StatsGenerator_debug
> > > -- MACOSX_BUNDLE_LONG_VERSION_STRING: StatsGenerator_debug Version 2011.02.08
> > > -- MACOSX_BUNDLE_BUNDLE_NAME: StatsGenerator_debug
> > > -- MACOSX_BUNDLE_SHORT_VERSION_STRING: 2011.02.08
> > > -- MACOSX_BUNDLE_BUNDLE_VERSION: 2011.02.08
> > > -- MACOSX_BUNDLE_COPYRIGHT: Copyright 2011, BlueQuartz Software. All Rights Reserved.
> > >
> > >
> > > I set all those variables before and after the add_executable call but most of the values does not show up in the plist file. Probably something simple I am missing.
> > >
> > > Thanks.
> > > ___________________________________________________________
> > > Mike Jackson                      www.bluequartz.net
> > > Principal Software Engineer       mike.jackson at bluequartz.net
> > > BlueQuartz Software               Dayton, Ohio
> > >
> > >
> > > Does your add_executable call have the MACOSX_BUNDLE flag in it?
> > >
> > > You should definitely set those variables before calling add_executable, and they should definitely show up if you have MACOSX_BUNDLE turned on.
> > >
> > > What generator are you using? Xcode or Unix Makefiles or something else?
> > >
> > >
> >
> > Using Makefiles generator. Correctly set MACOSX_BUNDLE in the add_executable() call. This is on OS X 10.6.6 with CMake 2.8.3 (self compiled)
> >
> > I tried the --trace but I don't really know what I should be looking for. There is a lot of output to look through.
> >
> > Tried from a clean build directory and still has the same thing.
> >
> > Mike Jackson
> >
> >
> >
> > _______________________________________________
> > 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
> 



More information about the CMake mailing list