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).
1. Question
How do I run the ORE Studio C++ code generator?
2. Answer
There are three entry points depending on scope:
2.1. 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> --address <address>
Examples:
./compass.sh codegen entity generate country --address ores.cpp.repository ./compass.sh codegen entity generate country --address ores.sql.schema ./compass.sh codegen entity generate country --address ores
Omit --address to generate the entity's full supported set — ores
is the graph root, so --address ores is equivalent.
Preview what would change without writing:
./compass.sh codegen entity generate country --address ores.cpp.repository --diff ./compass.sh codegen entity generate country --address ores.cpp.repository --dry-run
See How do I generate a codegen entity? for the full workflow.
2.2. By model file
Generate from a specific org model file:
./compass.sh codegen generate --model projects/path/to/model.org --address <address>
2.3. Across a whole component
Regenerate every entity in a component:
./compass.sh codegen regenerate --component refdata --address ores.cpp ./compass.sh codegen regenerate --component refdata --address ores.sql.schema
3. Script
All three entry points are implemented in
projects/ores.compass/src/compass_codegen_entity.py (entity-name
workflow) and cmd_codegen in
compass.py (model-file and component-wide workflows).
4. Tested by
Run ./compass.sh codegen entity generate country --address ores.cpp.repository
--dry-run and verify six repository file paths are printed without errors.
5. 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.