Aedifex is a Haxe build tool built around a typed Aedifex.hx project root instead of a hand-authored top-level hxml.
The public surface stays intentionally small:
- target-first build commands
- environment setup as a first-class contract
- Haxe-authored project metadata
- task automation
- machine-readable tooling for editor integration
Install:
haxelib install aedifex
haxelib run aedifex setupLocal development checkout:
haxelib dev aedifex /path/to/aedifex
haxe run.hxmlCreate an application:
aedifex create path/to/MyAppPrepare a target and build:
aedifex setup cpp
aedifex build cpp path/to/MyApp -debug
aedifex run cpp path/to/MyApp -debugpackage;
import aedifex.build.Project;
import aedifex.build.ProjectSpec;
class Aedifex {
public static final project:ProjectSpec = Project
.named("Main")
.source("src")
.identity("hello-world", "Hello World")
.version("1.0.0")
.done();
}Library root:
package;
import aedifex.build.Project;
import aedifex.build.ProjectSpec;
class Aedifex {
public static final project:ProjectSpec = Project
.library("my-lib")
.source("src")
.version("1.0.0")
.github("you/my-lib")
.license("MIT")
.done();
}Tool root:
package;
import aedifex.build.Project;
import aedifex.build.ProjectSpec;
class Aedifex {
public static final project:ProjectSpec = Project
.tool("my-tool", "My Tool")
.source("src")
.mainClass("mytool.cli.Main")
.version("1.0.0")
.done();
}aedifex create <path> [-plugin] [-library]
aedifex build <target> [projectPath] [-clean] [-android|-ios|-html5|-node] [-x64|-x86|-arm64|-armv7] [-debug|-release|-final] [-ignore]
aedifex clean <target> [projectPath] [-android|-ios|-html5|-node] [-x64|-x86|-arm64|-armv7] [-debug|-release|-final]
aedifex run <target> [projectPath] [-android|-ios|-html5|-node] [-x64|-x86|-arm64|-armv7] [-debug|-release|-final] [-ignore]
aedifex test <target> [projectPath] [-android|-ios|-html5|-node] [-x64|-x86|-arm64|-armv7] [-debug|-release|-final] [-ignore]
aedifex setup [status|remove]
aedifex setup <target> [-android|-ios|-html5|-node] [-check] [-json]
aedifex rebuild
Global convenience flags:
-theme aurora-theme-plugins path/to/plugins
Core targets:
cpphlnekojsjvmphp
Explicit qualifiers:
-android-ios-html5-node
Profiles:
-debug-release-final
Host desktop is implicit. aedifex build cpp means the current machine's desktop cpp target.
Use setup to make the current machine ready for a target:
aedifex setup cpp
aedifex setup hl
aedifex setup neko
aedifex setup jvm
aedifex setup php
aedifex setup js
aedifex setup js -nodeHelpful modes:
aedifex setup cpp -check
aedifex setup js -node -jsonIf you try to build, run, or test a target that is not ready:
- interactive terminals can offer to run setup first
-ignoreskips the question and fails cleanly
A small runnable sample lives at examples/hello-world.
Try:
aedifex build neko examples/hello-world -debug
aedifex run neko examples/hello-world -debug
aedifex build js examples/hello-world -node -debugGuides:
- Guide index
- Getting started
- Building apps
- Getting the VS Code extension
- Using the VS Code extension
- Building plugins
- Building your own CLI tool
Reference:
- Project model
- Extensions
- Defines
- Architecture
- Installation and deployment
- VS Code extension reference
API reference:
- Build the curated API reference locally with
aedifex task docs-api . - Build the full documentation artifact with
aedifex task docs . - CI uploads the generated documentation artifact for each successful docs job
Build docs locally:
aedifex task docs .Or build only the curated API docs:
aedifex task docs-api .The extension lives in tools/vscode-extension.
At a glance:
- target picker
- profile picker
- clean button
- one
Aedifextask - one
Aedifexlauncher/debug identity
See: