Carbon is Mac OS native API.
- 1 See also
- 2 What you need
- 3 Getting a "carbonproof" Lazarus
- 4 Compiling the LCL for Carbon interface via Makefile
- 5 Compiling the Carbon interface via Lazarus
- 6 Your first native Carbon app
- 7 Creating the Apple resource files
- Carbon interface FAQ - A list of frequently asked questions about Carbon interace
- Carbon interface issues - A list of known compatibility issues with Carbon interface
- Carbon interface internals - If you want to help improving the Carbon interface
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.
- Install SVN for Mac OS X: A good package is provided by Martin Ott. Another option is to install the SVN client using fink. SVN clients with a GUI (graphical user interface) are available from Versiontracker.
- Then follow Installing_Lazarus#Downloading_Lazarus_SVN
- 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 lazarus.app.
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':
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
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:
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 project1.app/Contents/MacOS/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 project1.app"
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.