How do I run codegen?
Table of Contents
For background on what the generator is and what it generates, see ores.codegen (the component model).
Question
How do I run the ORE Studio C++ code generator?
Answer
There are three entry points depending on scope:
By entity name (preferred for single-entity work)
Resolve by name — no need to know the model file path or component:
./compass.sh codegen entity generate <entity> --profile <profile>
Examples:
./compass.sh codegen entity generate country --profile qt ./compass.sh codegen entity generate country --profile sql ./compass.sh codegen entity generate country --profile all
Preview what would change without writing:
./compass.sh codegen entity generate country --profile qt --diff ./compass.sh codegen entity generate country --profile qt --dry-run
See How do I generate a codegen entity? for the full workflow.
By model file
Generate from a specific org model file:
./compass.sh codegen generate --model projects/path/to/model.org --profile <profile>
Across a whole component
Regenerate every entity in a component:
./compass.sh codegen regenerate --component refdata-cpp --profile all-cpp ./compass.sh codegen regenerate --component refdata --profile sql
Script
All three entry points are implemented in
projects/ores.compass/src/compass_codegen_entity.py and
projects/ores.compass/src/compass_codegen.py, dispatched from
compass.py.
Tested by
Run ./compass.sh codegen entity generate country --profile qt --dry-run
and verify twelve Qt file paths are printed without errors.
See also
- How do I generate a codegen entity? — entity-name workflow with
--diffand--dry-run. - How do I regenerate all layers for a domain entity? — component-wide run.
- How do I create a new doc? — uses the same codegen infrastructure for org-mode document generation.
- ores.codegen — what the generator is and what it generates.