configuration

package
v0.0.0-...-49df695 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2022 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Configuration

type Configuration struct {
	// Project name.
	Project string `yaml:"Project"`

	// Short project description.
	Description string `yaml:"Description"`

	// Version (ex. 0.0.1).
	Version string `yaml:"Version"`

	// Organization name.
	Organization string `yaml:"Organization"`

	// Organization contact information.
	Contact string `yaml:"Contact"`

	// List of maintainers.
	Maintainers []Maintainer `yaml:"Maintainers"`

	// List of root-level features.
	Features *[]Feature `yaml:"Features"`

	// Project website.
	Site string `yaml:"Site"`

	// Project repository.
	Repository string `yaml:"Repository"`

	Logo string `yaml:"Logo"`

	// Project license.
	License string `yaml:"License"`

	// List o runnable scripts.
	Scripts *[]Script `yaml:"Scripts"`

	// List of build profiles.
	Profiles []Profile `yaml:"Profiles"`

	// List of third-party Conan packages.
	Dependencies *[]Dependency `yaml:"Dependencies"`

	// List of targets.
	Targets *[]Target `yaml:"Targets"`
}

type Dependency

type Dependency struct {
	// The package manager or source to use when fetching the package.
	From string `yaml:"from"`

	// The package string. This should be in the form of
	// NAME/(VERSION or TAG)
	Package string `yaml:"package"`

	// The URL or path to the resource.
	Path string `yaml:"path"`

	// The dependency imports.
	Imports []DependencyImport `yaml:"imports"`
}

type DependencyImport

type DependencyImport struct {
	// The name of the import (ex. mylib::mylib).
	Name string `yaml:"target" jsonschema:"required"`

	// The find_package() argument string (ex. mylib REQUIRED).
	Declare string `yaml:"find" jsonschema:"required"`
}

type Feature

type Feature struct {
	// Other properties will only be evaluated if this property evaluates to true.
	Condition *string `yaml:"if"`

	// List of CMake instructions.
	Scripts *[]string `yaml:"scripts"`

	// List of target definitions.
	Definitions *[]string `yaml:"defines"`

	// The variable identifier.
	Key *string `yaml:"key"`

	// Optional description. This is mandatory for user provided options.
	Description *string `yaml:"description"`

	// The value of the variable.
	Value *string `yaml:"value"`
}

type Install

type Install struct {
	// The type of installation rule (ex. FILE or DIRECTORY).
	Type string `yaml:"type" jsonschema:"required"`

	// List of arguments passed to the install() command.
	Rules []string `yaml:"rules" jsonschema:"required"`
}

type Maintainer

type Maintainer struct {
	// Name of maintainer.
	Name string `yaml:"name"`

	// Contact details.
	Contact string `yaml:"contact"`

	// Role of maintainer.
	Role string `yaml:"role"`
}

type Profile

type Profile struct {
	// Profile name.
	Name string `yaml:"id"`

	// Profile description.
	Description string `yaml:"description"`

	// Build type (ex. Debug or Release).
	Type string `yaml:"type"`

	// Optional operating system (ex. Windows, Linux, macOS).
	System string `yaml:"system"`

	// The C++ compiler.
	Compiler string `yaml:"compiler"`

	// Optional system architecture.
	Arch string `yaml:"arch"`

	// List of option maps.
	Variables []map[string]string `yaml:"options"`

	// List of linker flags.
	LinkFlags []string `yaml:"flags.link"`

	// List of compiler flags.
	CompileFlags []string `yaml:"flags.compile"`
}

type QMLModule

type QMLModule struct {
	// QML module URI.
	Uri string `yaml:"uri" jsonschema:"required"`

	// QML module version.
	Version *string `yaml:"version"`

	// QML module prefix.
	Prefix *string `yaml:"prefix"`
}

type Resource

type Resource struct {
	// Optional prefix that will be prepended to the resource alias.
	Prefix *string `yaml:"prefix"`

	// Optional module name if this resource group describes a QML module.
	Module *string `yaml:"module"`

	// List of files used by this resource group. You may use
	// regular expression.
	Files []string `yaml:"files"`
}

type Script

type Script struct {
	// Script name.
	Name string `yaml:"name"`

	// Script description.
	Description string `yaml:"description"`

	// List of commands this script will run.
	Commands []string `yaml:"commands"`

	// Optional dependencies.
	Requires *[]string `yaml:"requires"`

	// Optional products (i.e. files this script will produce).
	Products *[]string `yaml:"products"`
}

type Target

type Target struct {
	// The name used to identify the target.
	Name string `yaml:"name" jsonschema:"required"`

	// A short description of the target. You can access this variable in C/C++ by
	// including "version.h" and accessing EXE_TARGET_DESCRIPTION.
	Description string `yaml:"description" jsonschema:"required"`

	// The type of target. Type can be "executable", "application", "shared-library",
	// "static-library", "header-library", "plugin", or "test".
	Type string `yaml:"type" jsonschema:"required"`

	// Set this property to true if you want to export a library under the
	// project namespace. This will automatically handle installation.
	Export *bool `yaml:"export"`

	// The target (and its unique dependencies) are only enabled when this condition
	// evaluates to true. Set the value to 'SNAKE_ALWAYS_BUILD' to have no requirements; do
	// not set it to an empty value as that would evaluate to false.
	Requirement string `yaml:"requirement" jsonschema:"required"`

	// The *relative* path to the source and header files. The TARGET_SOURCE_DIR variable
	// is set to the absolute path and can be used by your configuration.
	Path string `yaml:"path" jsonschema:"required"`

	// List of conditional features acquired by this target. These
	// are executed in the order they are provided.
	Features *[]TargetFeature `yaml:"features"`
}

type TargetFeature

type TargetFeature struct {
	Feature `yaml:",inline"`

	// List of libraries used by the target. If the name is separated by '::' then
	// the left side will be used as the package name for find_package. Qt6 components
	// are automatically handled.
	Libraries *[]TargetLibrary `yaml:"libraries"`

	// List of installation rules used by the target.
	Installs *[]Install `yaml:"installs"`

	// List of resources that will be embedded into the target.
	Resources *[]Resource `yaml:"resources"`

	// List of imported plugins.
	Plugins *[]string `yaml:"plugins"`

	// Map of target properties.
	Properties *[]map[string]string `yaml:"properties"`

	// List of enabled tests. Only active when target type is "test".
	Tests *[]Test `yaml:"tests"`

	// Qt QML module definition.
	Module *QMLModule `yaml:"module"`
}

type TargetLibrary

type TargetLibrary struct {
	// The link type (private or public).
	Type string `yaml:"type"`

	// The list of targets.
	Targets []string `yaml:"targets"`
}

type Test

type Test struct {
	// Name of this test.
	Name string `yaml:"name"`

	// List of function names.
	Functions []string `yaml:"functions"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL