gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Minimalist GNUstep possible?


From: Nicola Pero
Subject: Re: Minimalist GNUstep possible?
Date: Fri, 18 Jun 2010 09:56:53 +0100


On 18 Jun 2010, at 02:55, Jonathan Wolf wrote:

Thanks for the reply David,

I apologize for my lack of correct terminology - I did mean just
Foundation (as in, NSObject, NSDate, etc.) and .app bundles.

The idea that this is sparked off from is basically how one would take
ObjC, in a minimalist form, and port it over to another environment -
equally the same issue if you were to take it from iPhone to desktop
(say Windows/MinGW) or, probably another avenue to be explored next
year, iPhone to Android (if estimates of the Android market overtaking
iPhone stay true).

Having done years of C++, I've developed quite a hatred for all things
C++ in nature, and having gone from a strong C++ background to an ObjC
background, I have been absolutely amazed that it hasn't gotten more
wide reception. Either rate, I think one of the issues was that ObjC
was so intertwined to Apple, and GNUstep aims to break that - and this
is a very good thing imho.

So I am trying to leverage the Foundation runtime best I can, but in a
minimalist form as possible - so aiming at a one file .so/.dll is the
goal really.

If you use just gnustep-make and gnustep-base, you'll get exactly that. :-)

gnustep-make supports libraries (plain old shared libraries) and tools (plain old executables).
(use library.make or tool.make to compile these).

gnustep-base is exactly a shared library with some supporting tools and some resource files (timezone files, etc).

 Check

  http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/index.html

(and related gnustep-make tutorials) for a quick startup introduction to how to build and use tools and libraries.

You may be confused by the fact that GNUstep uses by default a GNUstep "filesystem layout", meaning has got its own directories for libraries, tools and resources - similar to how things are organized for
example on Apple.

You can disable that very easily by configuring gnustep-make with

 ./configure --with-layout=fhs

then, not only you can compile and link standard libraries and tools, but they are also installed into the standard
Unix /usr/bin etc. directories.

If you want to write your own makefiles or building system, you should use gnustep-config to get the compile/link
flags.

I would still recommend using gnustep-make/gnustep-base as they are mostly because:

* Linux distributions can have (and often do have) pre-built binary packages for these, which means that all you need is to install
these two packages and your software is ready to go :-)

* by using the standard core components that all of GNUstep is built on, you automatically benefit from all the bug fixes, new features
and enhancements that get in there

* your code will compile and run on all platforms supported by GNUstep (which are a lot) with almost no changes

* gnustep-make has very advanced parallel building support (in case your project ever grows to the point where compilation times
become a problem)

As a last comment, I'd like to mention that gnustep-make + gnustep- base are probably the most mature part of GNUstep and are really very production ready. There are companies that run large live Unix server systems and operations using software entirely based on them, and are extremely happy with the result. ;-)

Thanks



reply via email to

[Prev in Thread] Current Thread [Next in Thread]