Manifest

The manifest is the Package.toml file in every package. It contains all the information Grill needs to know about your package. A minimal manifest requires three fields. Name, Version and Description. For example:

[Package]
Name = "MyProject"
Version = "0.1.0"
Description = ""

Dependencies

Dependencies are added to a [Dependencies] table in the manifest. There are 3 types of dependencies:

  • Registry

  • Git

  • Local

Registry

Registry dependencies are the standard way of specifying dependencies. Here the identifier is a published package with a version requirement. The version requirement can be any semver-compatible string.

...
[Dependencies]
OpenGL = "3.3.0"

You can specify which features you want to enable for that specific dependencies with a feature array:

...
[Dependencies]
ImGui = { Version = "1.88", Features = ["OpenGL", "GLFW"] }

A package might have some default features enabled. You can disable these with the DefaultFeatures bool.

...
[Dependencies]
ImGui = { Version = "1.88", DefaultFeatures = false }

Git

Git dependencies require a url and a revision. They are not taken into account when resolving, so types from those dependencies cannot be passed to other dependencies safely.

...
[Dependencies]
OpenGL = { Git = "https://github.com/opengl/opengl", Rev = "f478h29d" }

Local

Local dependencies are specified by path.

...
[Dependencies]
MyUtilities = { Path = "./path/to/project" }

Workspaces

If your root package does not include all packages you want in your workspace, or you want to change the startup project, you can do so in the [Workspace] section.

[Workspace]
Members = ["path/to/app"]
StartupProject = "app"

Members is a list of paths to packages you want included in the workspace.

StartupProject is the name of the startup project.

Last updated