[CMake] OS X Application plist configuration questions

David Cole david.cole at kitware.com
Thu Feb 10 15:30:28 EST 2011


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110210/fca5aac6/attachment.htm>


More information about the CMake mailing list