Difference between revisions of "Carbon Interface"

From Lazarus wiki
Jump to navigationJump to search
(Added link for downloading app bundle script.)
Line 64: Line 64:
 
Tip: There is also a script that creates an app bundle for a GTK executable at [[OS_X_Programming_Tips|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 [http://web.fastermac.net/~MacPgmr/Lazarus/ here].
 
Tip: There is also a script that creates an app bundle for a GTK executable at [[OS_X_Programming_Tips|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 [http://web.fastermac.net/~MacPgmr/Lazarus/ here].
  
== Carbon interface internals ==
+
== See Also ==
  
If you want to help improving the Carbon interface, see here:
+
* [[OS_X_Programming_Tips]]
  
[[Carbon interface internals]]
+
* [[Carbon interface internals]] - If you want to help improving the Carbon interface

Revision as of 10:55, 26 May 2007

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

macOSlogo.png

This article applies to macOS only.

See also: Multiplatform Programming Guide


What you need

The Carbon widgetset is in an early stage of development. A fully functional Lazarus IDE (compiled against GTK widgetset) on Mac OS X is strongly recommended. 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 Carbon interface

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

BuildLazarusOptionsCarbonIntf.png

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 > Linkink > Options Check Pass Options to the Linker

and type in the edit field:

-framework carbon

File:CarbonLinkerOptions.png

You should now be able to compile the project without errors. It will create an executable project1, but you can not 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 via its Finder icon or in the native Mac OS Terminal via ./project1.app/Contents/MacOS/project1

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.

See Also