Carbon Interface

From Free Pascal wiki
Revision as of 12:18, 24 January 2008 by Tombo (talk | contribs) (Compiling the Carbon interface via Makefile)

Deutsch (de) | English (en) | 日本語 (ja) |

Carbon is Mac OS native API.

See also

What you need

The Carbon widgetset is under development, but isn't yet able to run Lazarus, so we recommend a Lazarus IDE compiled against GTK widgetset on Mac OS X. For instructions see Installing Lazarus on Mac OS X.

Getting a "carbonproof" Lazarus

Note: If you installed a Lazarus snapshot, you can skip this section and the next since the snapshot includes both the Carbon widgetset source and compiled units for the Carbon widgetset.

  • Start Lazarus. The IDE will start with a new project with an empty form. Save this project under a name of your choice. In the following examples we assume this to be /Users/<yourUsername>/pascal/test/project1.lpi

Compiling the LCL for Carbon interface via Makefile

Type in terminal:

make lcl LCL_PLATFORM=carbon OPT="-k-framework -kcarbon"

Compiling the Lazarus IDE for Carbon via Makefile (only for alpha-testing)

Type in terminal:

make all LCL_PLATFORM=carbon OPT="-k-framework -kcarbon"

You must run Lazarus via

Compiling the Carbon interface via Lazarus

We now assume your Lazarus directory is located at /Users/<yourUsername>/pascal/lazarus/

  • Start Lazarus.
  • Set Environment>Environment Options>Files>Lazarus Directory to /Users/<yourUsername>/pascal/lazarus/
  • Set Tools>Configure "Build Lazarus"> to


and add this to your 'Options':

-k-framework -kcarbon

This will prevent unresolved symbols (Carbon-symbols like _ActivateWindow) while linking lazarus.

  • Tools>Build Lazarus -- This will compile the Carbon Interface and put the .ppu files into /Users/<yourUsername>/pascal/lazarus/lcl/units/powerpc-darwin and /Users/<yourUsername>/pascal/lazarus/lcl/units/powerpc-darwin/carbon

Your first native Carbon app

Compiler Options

Set Project > Compiler Options > Paths > LCL Widget Type to carbon

Set Project > Compiler Options > Linking > Options Check Pass Options to the Linker

and type in the edit field:

-framework carbon


You should now be able to compile the project without errors. It will create an executable project1, but you cannot focus it. That's because Mac OS X expects some hidden resource files.

Creating the Apple resource files

There is a tool to create these files.

Open /Users/<yourUserName>/pascal/lazarus/components/macfiles/examples/createmacapplication.lpi in the IDE. Compile.

Open a Terminal of your choice. Type:

cd /Users/<yourUserName>/pascal/project1/
/Users/<yourUserName>/pascal/lazarus/components/macfiles/examples/createmacapplication project1
ln -s ../../../project1

Now you can start the program from IDE (checked option Use Application Bundle for running and debugging (darwin only)) or via its Finder icon or in the native Mac OS X Terminal via "open"

Tip: There is also a script that creates an app bundle for a GTK executable at OS X Programming Tips. You can modify it to use with a Carbon executable (take out the 4 instructions that start the executable with X11). A slightly improved version of this script for Carbon apps is also available for downloading from here.