Provided by: fp-units-castle-game-engine_7.0~alpha.3+dfsg2-4_amd64 

NAME
castle-engine - build and package Castle Game Engine programs
DESCRIPTION
castle-engine: Build and package Castle Game Engine programs.
Call with the current directory set to your project, like this:
castle-engine [OPTIONS]... COMMAND
Possible commands:
create PROJECT-NAME
Create a new project, based on one of the existing templates. Subdirectory PROJECT-NAME will be
created in directory provided as --project-parent-dir), by default in the current directory.
compile
Compile project. By default compiles for the current OS / current CPU (linux / x86_64). You can
use --os / --cpu options to compile to some other OS / CPU. You can use --target to compile for a
collection of OS / CPU combination (like "iOS" or "Android").
package
Package the application into the best archive format for given operating system (OS) / processor
(CPU) / target. The OS, CPU and "target" can be changed just like at "compile".
install
Install the application created by previous "package" call. Useful when OS is "android", it
installs the apk package created by previous "package" call for Android. Useful for quick testing
of your app on a device connected through USB.
run
Run the application. On some platforms, it requires installing the application first (e.g. on
Android, where we install and run on a device connected through USB). So run the "install" command
before. On other platforms (e.g. standalone Windows, Linux, macOS...), it simply runs the last
compiled application. So just "compile" the application first.
package-source
Package the source code of the application.
clean
Clean leftover files from compilation and packaging. Does not remove final packaging output.
simple-compile
Compile the Object Pascal file (unit/program/library) given as a parameter. This does not handle
the Castle Game Engine projects defined by CastleEngineManifest.xml files. It merely calls "fpc"
with proper command-line options for units/programs/libraries using our engine. Use this instead
of "compile" only if there's some good reason you don't want to use CastleEngineManifest.xml to
your project.
auto-generate-textures
Create GPU-compressed versions of textures, for the textures mentioned in
<auto_compressed_textures> inside the file data/material_properties.xml.
auto-generate-clean
Clear "auto_compressed" subdirectories, that should contain only the output created by
"auto-generate-textures" target.
generate-program
Generate files to edit and run this project in Lazarus: lpr, lpi, castleautogenerated unit.
Depends on game_units being defined in the CastleEngineManifest.xml.
editor
Run Castle Game Engine Editor within this project, with possible project-specific components.
editor-rebuild-if-needed
Internal. 1st part of "editor" command.
editor-run [--wait-for-process-exit PROCESS-ID]
Internal. 2nd part of "editor" command.
output
Output some project information (from the manifest). Next parameter determines the information:
executable-name name pascal-name search-paths version version-code
output-environment
Output some environment information (independent of any project). Next parameter determines the
information:
fpc-exe fpc-standard-units-path
cache
Create cache to speed up future compilations.
cache-clean
Remove the cache directory.
create-manifest
(Deprecated) Creates simple CastleEngineManifest.xml with guessed values.
Available options are:
-h / --help
Print this help message and exit.
-v / --version
Print the version number and exit.
-V / --verbose
Verbose mode, output contains e.g. list of packaged files.
--mode=debug|release
Compilation mode, used by "compile" and "package" commands. Also packaging mode on some platforms
(right now, Android). By default "release".
--assume-compiled
Do not automatically do "clean" and "compile" before "package". Instead assume that compiled
executable for given OS/CPU/mode is already present in the package directory.
--fast Do not "clean" before "package". Recompile only what changed. This is faster for development, but
cannot guarantee that everything is recompiled in a release mode.
--plugin
Compile/package/install a browser NPAPI plugin. DEPRECATED.
--fpc-version-iphone-simulator VERSION
When compiling for iPhone Simulator, we pass -V<VERSION> to the "fpc" command-line. This is
necessary if you use the official "FPC for iOS" package (see the "Getting Started - iOS.rtf"
inside the "FPC for iOS" dmg for explanation). You can set this to "auto" (this is the default) to
auto-detect this based on regular FPC version. Or you can set this to a particular version, like
"3.0.5". Or you can set this to empty "" to avoid passing any -V<VERSION> (suitable for FPC
3.1.1).
--compiler-option=PARAM
Extra parameter for "fpc" command line. For example --compiler-option=-dUSE_MOUSE will add
-dUSE_MOUSE. You can use this parameter multiple times.
--output=DIR
Where to place the output executables, packages, and the "castle-engine-output" directory with
temporary generated files.
--project=DIR
Where to search for the project (CastleEngineManifest.xml file). By default we search in the
current directory. The argument can either be a directory, or a filename of
CastleEngineManifest.xml file.
--package-format=FORMAT
Use with "package" command to customize the result. Available FORMAT values:
- default (platform specific; on most platforms
creates a zip/tar.gz archive; on Android creates APK; on iOS creates Xcode project) - zip (pack
all files into zip) - tar.gz (pack all files into tar.gz) - directory (put all files into a new
subdirectory) - android-apk (only on Android: create APK) - android-app-bundle (only on Android:
create AAB) - ios-archive-ad-hoc (only on iOS: archive using "ad-hoc" method to IPA file) -
ios-archive-development (only on iOS: archive using "development" method) - ios-archive-app-store
(only on iOS: distributes the application to the TestFlight and the AppStore)
--package-name-no-version
Use with "package" command. The resulting file/directory name will not contain the version number.
--update-only-code
Use with "package" command. Makes the packaging faster, as you guarantee that only the Pascal code
have changed since last packaging (so you did not change e.g. data/ or CastleEngineManifest.xml).
--ios-simulator
Use with "package" command when --target=iOS. Allows to run the project on iOS simulator.
--all Use with "auto-generate-clean" command. Indicates to clean everything auto-generated. By default
we only clean unused files from "auto_generated" directories.
--manifest-name=AlternativeManifest.xml
Search and use given "AlternativeManifest.xml" file instead of standard
"CastleEngineManifest.xml". Useful if you need to maintain completely different project
configurations for any reason.
--wait-for-process-exit=PROCESS-ID
Internal, useful with "editor-run".
--gui-errors
Show errors as GUI boxes. On Unix, requires "zenity" installed.
--compiler=COMPILER
Select compiler: "autodetect", "fpc", "delphi".
--guid-from-name
Use with "generate-program" command. Will generate stable GUID (in Delphi DPROJ) from project's
qualified name.
--windows-robust-pipes
Only on Windows (ignored on other systems): Force using less performant, but more robust, way to
run child processes with "passthrough", like for "castle-engine run". Useful to run "castle-engine
run" from PowerShell, outside of CGE editor.
--target=<target>
The target system for which we build/package. Available <target> values:
- "custom" (default): Build for a single OS and CPU
combination, determined by the --os and --cpu options. These options, in turn, by default indicate
the current (host) OS/CPU.
- "ios": Build for all the platforms necessary for
iOS applications. This includes both 32-bit and 64-bit iOS devices and iPhoneSimulator.
- "android": Build for all the platforms necessary
for Android applications. This includes both 32-bit and 64-bit Android devices.
- "nintendo-switch": Build an application for
Nintendo Switch.
--os=<os>
Set the target operating system for which we build/package. This is ignored if you used
--target=<target>, with <target> being something else than "custom". Available <os> values:
linux go32v2 win32 os2 freebsd beos netbsd amiga atari solaris qnx netware openbsd wdosx palmos
macosclassic (classic MacOS, that ended with
MacOS 9)
darwin (modern macOS 10.x, caled also Mac OS X) emx watcom morphos netwlibc win64 wince gba nds
embedded symbian haiku iphonesim aix java android nativent msdos wii aros dragonfly win16 ios
--cpu=<cpu>
Set the target processor for which we build/package. This is ignored if you used
--target=<target>, with <target> being something else than "custom". Available <cpu> values:
i386 m68k powerpc sparc x86_64 arm powerpc64 avr armeb mips mipsel jvm i8086 aarch64 (64-bit ARM)
sparc64
Defaults:
android.compile_sdk_version = 34 android.min_sdk_version = 21 android.target_sdk_version = 34
Full documentation on https://castle-engine.io/build_tool
castle-engine version 7.0-alpha.3. Using Castle Game Engine ( https://castle-engine.io/ ) version
7.0-alpha.3. Compiled with FPC 3.2.2. Platform: Desktop, OS: Linux, CPU: x86_64 (code compiled for
64-bit architecture).
Castle Game Engine April 2025 CASTLE-ENGINE(1)