[CMake] CMake 2.8.1 + Qt/Cocoa + OS X Problem -- qt_menu.nib not getting copied
Michael Wild
themiwi at gmail.com
Sat Apr 17 07:21:00 EDT 2010
On 17. Apr, 2010, at 12:59 , David Cole wrote:
> On Sat, Apr 17, 2010 at 1:02 AM, Clinton Stimpson <clinton at elemtech.com>wrote:
>
>>
>> On Apr 16, 2010, at 9:13 AM, David Cole wrote:
>>
>> On Fri, Apr 16, 2010 at 11:03 AM, Michael Wild <themiwi at gmail.com> wrote:
>>
>>>
>>> The way BundleUtilities (that is, GetPrerequisites is actually doing the
>>> work here) is designed so far is to check for run-time dependencies using
>>> otool and similar utilities. However, CMake can't possibly detect that
>>> qt_menu.nib is required since this file is loaded dynamically at run-time,
>>> so someone has to put that information into GetPrerequisites. Since
>>> qt_menu.nib is a rather recent addition to Qt, and most people use their own
>>> scripts to accomplish this, it hasn't happened so far. Also, there's the
>>> issue of whether one actually wants to hard-code such specific information
>>> into a general tool like GetPrerequisites... The danger of creating a huge
>>> number of unmaintainable special cases is quite big there...
>>>
>>> Perhaps one could devise a way for FindXXX/XXConfig modules to communicate
>>> such requirements to GetPrerequisites using properties. This approach would
>>> be much more modular and wouldn't require GetPrerequisites to be updated
>>> every time a module changes.
>>>
>>>
>> As the primary author of GetPrerequisites and BundleUtilities, I'm gonna
>> chime in here, even though I don't have time in the near term future to do
>> much useful work on the topic...
>>
>> I think that the missing *.nib files should be accounted for by adding the
>> capability to BundleUtilities to copy *all* of the files in a copied
>> framework. Right now, it copies *only* the actual binary dylib files to
>> minimize the size of the resulting bundle. Clearly that does not work for
>> libraries that depend on embedded resources that are in other parts of the
>> framework. I would like, moving forward, to add the ability to say "copy
>> everything" or "copy this list of extra stuff" for any given framework that
>> gets pulled in because it is a prereq.
>>
>>
>> I'm looking at the simple example of a framework given here (Listing 1):
>> <
>> http://devworld.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html
>>>
>> What if we just add the Resources directory if it exist for the version of
>> the framework being used? In other words, if Resources exists, assume its
>> needed to make the framework functional. I've attached a patch that does
>> this.
>>
>> This would fix the Qt/Cocoa problem.
>>
>> Then what if it was a further extension to optionally include more parts of
>> the framework or the entire framework, like you are suggesting?
>>
>> Clint
>>
>>
>>
> Excellent idea. I will work with this patch next week some time and see if I
> can't get it applied.
>
> Thx,
> David
Yeah, that sounds like a pretty reasonable approach/assumption which should cover a large number of cases.
BTW, does anyone know of a complete framework reference? The one given above is introductory at best, and I can't seem to find anything authoritative e.g. mentioning PrivateHeaders...
Michael
More information about the CMake
mailing list