Chromium Embedded Framework for Free Pascal
How to get started
- Download CEF3 (standard or minimal distribution). Make sure to use the correct CEF3 version (see the changelog / release tag); other versions (older or newer) usually don't work and are not recommended
- Create a new project or use one of the projects in the
LCLSimpleis a good starting point
- Read the following section on how to correctly set up the file layout
Most examples use build modes. Make sure to select the correct one, otherwise compilation will fail.
Follow the instructions on the wiki.
Windows and Linux
A CEF package contains
- the CEF library itself and related binaries in the
- resources in the
By default CEF expects the library and binaries in
PATH (Windows) or
LD_LIBRARY_PATH (Linux) and the the resources in the same folder as the executable. A custom path for the library can be set using
CefLibraryDirPath. The path for the resources can be changed by setting
CefLocalesDirPath. However, some files cannot be moved:
chrome_elf.dllhas to be in
PATHor the same folder as the executable
icudtl.dathas to be in
*_blob.binhave to be in the same folder as the executable
Make sure to include
cthreads as the first unit in your main program.
If you build CEF3 yourself make sure
tcmalloc is disabled.
--single-process or change
True. This mode is not officially supported by Chromium.
If the browser goes "blank" (e.g. when loading a page), the render process crashed. See Debugging on how to debug the render process. The render process restarts automatically on the next page request.
If CEF is initialized a subprocess is started. By default a second instance of the main program is used as the subprocess. Nevertheless, the preferred way is to define an own (minimal) subprocess executable. In fpCEF3 this can be done by setting
CefBrowserSubprocessPath to the path of the subprocess executable. In the
LCLSimple example this setting can be found in the
Initialization section at the end of
A minimal subprocess can be found in the folder
/Examples/SubProcess. The subprocess also needs the CEF3 library and resources in its path, so it is recommended to put the subprocess executable in the same folder as the main exe.
More details can be found here.
Sometimes it is useful to debug the subprocesses spawned by cef. On Linux this can be done by adding
--renderer-cmd-prefix='xterm -title renderer -e gdb --args'
to the command line.
Further details can be found here.
- Linux (Gtk2 or Qt4)
- macOS (Cocoa)
You can find comments and usage information in
- cef3lib.pas / cef3api.pas
- the example projects in the
- the official api docs here
- the official cefclient example program here