xsmp.project¶
The project language configures an XSMP project workspace.
This page documents the user-facing xsmp.project file: project declaration, sources, dependencies, profile selection and tool activation.
Root syntax¶
An XSMP Project declares one project and lists the sources, dependencies, profile and tools that control how that project is built and validated.
project '<project-name>'
(source '<path>' |
dependency '<project-name>' |
profile '<profile-name>' |
tool '<tool-name>')*
Required:
project- the project name
Optional:
- any number of
sourcestatements - any number of
dependencystatements - zero or one
profilestatement - any number of
toolstatements
Example:
project 'missionsystem'
source 'smdl'
dependency 'foundation'
profile 'xsmp-sdk'
tool 'smp'
tool 'adoc'
Strings¶
The grammar accepts both single-quoted and double-quoted strings. This documentation uses single quotes by default:
project 'missionsystem'
source¶
A Source Declaration tells XSMP where to look for the modeling documents that belong to the current project.
Syntax:
source '<path>'
Required:
source- one path string
Behavior:
- the path is relative to the project directory
- a project may declare as many sources as needed
- each source may point to a directory or a single file
Examples:
source 'smdl'
source 'models/foundation'
dependency¶
A Project Dependency declares that the current project uses modeling documents from another XSMP project in the same workspace.
Syntax:
dependency '<project-name>'
Required:
dependency- the name of another XSMP project
Behavior:
- dependencies are resolved by project name, not by file path
- a project may declare as many dependencies as needed
- the target project must exist somewhere in the current workspace
- the dependency's modeling documents become available to the current project
What dependencies make visible:
- catalogues
- configurations
- assemblies
- link bases
- schedules
What dependencies do not inherit:
- the other project's selected profile
- the other project's selected tools
Example:
dependency 'foundation'
dependency 'avionics'
profile¶
A Profile Selection activates one project-wide profile for the current project.
Syntax:
profile '<profile-name>'
Required:
profile- one installed profile identifier
Behavior:
- profile identifiers are globally visible in
xsmp.project - the selected profile becomes active only for the current project
- profiles may add generators, extra consistency checks and wizard templates
- a project may select at most one profile
Example:
profile 'xsmp-sdk'
tool¶
A Tool Activation enables one additional capability for the current project.
Syntax:
tool '<tool-name>'
Required:
tool- one installed tool identifier
Behavior:
- tool identifiers are globally visible in
xsmp.project - active tools are local to the current project
- a project may enable as many tools as needed
Examples:
tool 'smp'
tool 'adoc'
tool 'python'
Statement order¶
The grammar allows source, dependency, profile and tool statements in any order after the project line.
For readability, a common convention is:
sourcedependencyprofiletool
Practical visibility rules¶
These identifiers are globally visible in all xsmp.project files:
- profile ids
- tool ids
These effects remain project-local:
- generators
- extra consistency checks
- wizard additions
- extra model libraries supplied by the selected profile or tools
That means two projects in the same workspace may activate different tools and profiles without leaking project-local behavior into each other.
Typical examples¶
Minimal project¶
project 'foundation'
source 'smdl'
Project with dependencies and generation¶
project 'mission-demo'
source 'smdl'
dependency 'foundation'
dependency 'avionics'
profile 'xsmp-sdk'
tool 'smp'
tool 'adoc'