1. Project Object
This object describes basic information about the project such as the name, the version and the URL.
Object path: |
/project |
||
Properties |
Type(s) |
Mandatory |
Comments |
name |
string |
True |
The name of the project |
version |
string |
True |
The version string of the project |
url |
string |
False |
The homepage URL of the project |
license |
string |
False |
The homepage URL of the project |
2. Requires
The require object describes a set of requirements for a given project. Each requirement may specify a set of defines and variables. An example of require may be a given library, a header or a pkg-config package.
Object path: |
/requires/<require name> |
||
Key |
Type(s) |
Mandatory |
Comments |
type |
string |
True |
The type of require, currently supported "package" as in pkg-config package. Headers, types and functions are next |
version |
string |
False |
For pkg-config packages, the minimum version of the requirement. You can append >= <= or == to the version string for atleast/max/equal version support. |
3. Targets
This object describes a target to be compiled and/or installed from a given input. The name of the target will be used as the name of the output file without any additional extensions. Every target uses a tool (or compiler) for the output generation, and each tool has a list of supported output types. For example, the C compiler can compile a program, a static library or a shared library.
Object path: |
/targets/<target name> |
||
Key |
Type(s) |
Mandatory |
Comments |
tool |
string |
True |
The compilation/transforming tool for this target |
type |
string |
True |
The target type, each tool has a list of supported types |
input |
string |
True |
The list of input files (TODO: Allow ANT glob patterns and specify singletons as strings) |
uses |
list<strings> |
False |
The list of shared or static libraries, targets or requires to link against |
packages |
list<strings> |
False |
The list of pkg-config pacakages (/requires/*/type = package) to link against |