Re: Delivering application to MacOS and static linking

"Yen-Ju Chen" <[email protected]> Thu, 24 May 2007 09:40:44 -0700
Newsgroups gmane.comp.lib.gnustep.user
Message-ID <[email protected]>
On 5/24/07, Benjamin Dasnois <[email protected]> wrote:
> Hello Yen-Ju,
>
> thanks for your help. I prefer using gnustep-make, I read the articles
> you've sent but I don't really see how to do that with gnustep-make...
> Could you give me an actual example?
>
> Regards,

Here is my GNUmakefile.postamble.
It is a little messy at the first sight because I have frameworks,
libraries and bundles.
For framework, you can just look at OrganizeKit.framework.
First, you need to copy it after the compilation:

        @mkdir -p $(CURDIR)/$(APP_NAME).app/Contents/Frameworks
        @cp -fr $(CURDIR)/OrganizeKit/OrganizeKit.framework \
        $(CURDIR)/$(APP_NAME).app/Contents/Frameworks/

Then you change the symbol of it:

        install_name_tool -id
        @executable_path/../Frameworks/OrganizeKit.framework/OrganizeKit
        $(APP_NAME).app/Contents/Frameworks/OrganizeKit.framework/OrganizeKit

Finally, tell application where it is by changing the default symbol:

        install_name_tool -change
        OrganizeKit.framework/OrganizeKit
        @executable_path/../Frameworks/OrganizeKit.framework/OrganizeKit
        $(APP_NAME).app/Contents/MacOS/$(APP_NAME)

To know the default symbol in application,
do

      'otool -L $(APP_NAME).app/Contents/MacOS/$(APP_NAME)'

The last step make sure the symbol in application point to the right place.

Yen-Ju

>
> DASNOIS Benjamin
>
> On 5/21/07, Yen-Ju Chen <[email protected]> wrote:
> > On 5/21/07, Benjamin Dasnois <[email protected]> wrote:
> > > Hello,
> > > as my first post to this list, I would like to say that this project
> > > is really impressing and that's something I'm going to use from now.
> > > :) I hope I will be able later to give back to the community.
> > >
> > > But, nowadays I have some problems; I'm a student in a computing
> > > school and I have to develop a tool that will work on MacOS. My main
> > > concern is that once compiled I should be able to distribute my
> > > application to MacOS users without telling them to install gnustep and
> > > renaissance. I can compile on a MacOS so I think that gnustep is not a
> > > problem but what about renaissance? I thought about static linking but
> > > I've to admit that I don't really know how to do that... (I use
> > > gnustep's make system)
> >
> >   The way I do is that I build application on Unix with GNUstep
> >   and on Mac with Cocoa.
> >   In that case, you don't need to include GNUstep on Mac.
> >   If you are using 3rd party frameworks on Mac, ex, Renaissance,
> >   you can include that framework inside your application for delivery.
> >   Therefore, users don't need to install that framework in advance.
> >
> >   There are 2 ways of doing it:
> >   1. Use xcode for your project on Mac. It should be easier,
> >       but you have to maintain both GNUmakefile for GNUstep and xcode
> > project for Cocoa.
> >   2. If you like gnustep-make as me,
> >       you can use GNUmakefile.postamble to move that framework into
> >       AppName.app/Contents/Frameworks/
> >       You also need to use 'install_name_tool' to change symbols.
> >       You can google it or these two links may be useful:
> >       http://qin.laya.com/tech_coding_help/dylib_linking.html
> >       http://doc.trolltech.com/qq/qq09-mac-deployment.html
> >
> >   Yen-Ju
> >
> > >
> > > Thank you in advance.
> > >
> > > Regards,
> > >
> > > --
> > > DASNOIS Benjamin
> > >
> > >
> > > _______________________________________________
> > > Help-gnustep mailing list
> > > [email protected]
> > > http://lists.gnu.org/mailman/listinfo/help-gnustep
> > >
>

_______________________________________________
Help-gnustep mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gnustep
GNUmakefile.postamble (application/octet-stream, 2.1 KB) - not displayed