Carbon Interface

From Lazarus wiki
Jump to navigationJump to search

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


This article applies to macOS only.

See also: Multiplatform Programming Guide


Carbon is a Mac OS native API.

Other Interfaces

Platform specific Tips

Interface Development Articles

See also

What you need

The Carbon widgetset is under development, running the Lazarus IDE under it may not be reliable, 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 Carbon interface via Makefile

Type in terminal:

make lcl LCL_PLATFORM=carbon

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

Type in terminal:

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

Under Leopard (OS X 10.5.x) you should type:

make all LCL_PLATFORM=carbon OPT="-k-framework -kcarbon -k-framework -kOpenGL -k'-dylib_file' \

Important notes about the Carbon IDE

  • You must run Lazarus via
  • Make sure your editor is using a mono-font. You can check that on the Editor Options dialog. The "Monaco" font is a good suggestion.

Known Carbon IDE bugs

  • Sometimes crashes on exit. Not reliably reproducible yet.

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 -k-framework -kOpenGL

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

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.