Applications and Entry Points
This document maps the app entry points in Source/Applications/ and how they are wired by BuildTools.
Build target ownership
Application source files are engine-owned, but target names and enablement are often project-dependent. BuildTools/cmake/stages/Applications.cmake creates targets from these entry points using project variables such as FO_DEV_NAME, platform options, and feature toggles like client/server/library/headless modes.
Because of that, this doc names source entry points and roles, not universal final target names.
Source paths inspected
Source/Applications/ASCompilerApp.cppSource/Applications/BakerApp.cppSource/Applications/BakerLib.cppSource/Applications/ClientApp.cppSource/Applications/ClientLib.cppSource/Applications/EditorApp.cppSource/Applications/MapperApp.cppSource/Applications/ServerApp.cppSource/Applications/ServerDaemonApp.cppSource/Applications/ServerHeadlessApp.cppSource/Applications/ServerServiceApp.cppSource/Applications/TestingApp.cppBuildTools/cmake/stages/Applications.cmakeBuildTools/cmake/helpers/Build.cmake
Entry-point files
Source/Applications/ClientApp.cpp— client executable host entry point.Source/Applications/ClientLib.cpp— client runtime library entry point used by host/runtime split workflows.Source/Applications/ServerApp.cpp— standard server application entry point.Source/Applications/ServerDaemonApp.cpp— daemon-style server variant.Source/Applications/ServerHeadlessApp.cpp— headless server variant.Source/Applications/ServerServiceApp.cpp— service-style server variant.Source/Applications/MapperApp.cpp— mapper tool entry point.Source/Applications/EditorApp.cpp— editor tool entry point.Source/Applications/BakerApp.cpp— build/resource baking entry point.Source/Applications/BakerLib.cpp— baking library entry point when baking is composed as a library.Source/Applications/ASCompilerApp.cpp— AngelScript compiler entry point.Source/Applications/TestingApp.cpp— test runner application entry point.
CMake wiring
BuildTools/cmake/stages/Applications.cmake is the primary source for application target creation. It uses helpers such as AddExecutableApplication and AddSharedApplication to create executable or shared-library outputs and to attach platform-specific properties.
Observed wiring patterns include:
- Client executable and client runtime library are created when client builds are enabled.
- Headless variants use headless frontend libraries where applicable.
- Server variants are selected by server/platform/service options.
- Tool applications are created only when the corresponding tool/build options are enabled.
- Test applications are marked as testing apps so they can be treated differently from product runtime apps.
Read the CMake stage before documenting a target as available. Availability can depend on platform and project options.
Which entry point should I inspect?
- Client startup or host/runtime behavior:
ClientApp.cpp,ClientLib.cpp, ClientUpdater.md. - Server lifecycle:
ServerApp.cppand server variants, ServerRuntime.md. - Resource generation:
BakerApp.cpp,BakerLib.cpp, BakingPipeline.md. - Script compilation:
ASCompilerApp.cpp, Scripting.md and GeneratedApiAndMetadata.md. - Mapper automation:
MapperApp.cpp, MapperTools.md. - Tests:
TestingApp.cpp, ../Source/Tests/README.md, the currentSource/Tests/README.mdroute until Docs/Testing.md is created.
Documentation rule
When adding or changing an application entry point:
- Update
BuildTools/cmake/stages/Applications.cmakeor its helpers if target creation changes. - Update this file with the entry point’s role.
- Update a focused subsystem doc if runtime behavior changes.
- Validate through the embedding project’s relevant preset/target instead of assuming one universal target name.