Multiple projects¶
In order to manage larger project structures and nested dependencies, subprojects can be used.
Requirements¶
Project Naming
- When one or more subprojects are specified, the root project has to be named, as targets are then grouped and identified by project.
- If a subproject is not given a name, it is required to be external and that the corresponding config file specifies a name
Build Paths
If there is only a single project, the build paths will be the same as if only targets had been specified. Otherwise, every project will get its own folder build/projectname and targets will get their own folders under this folder.
Example configuration file¶
A simple example of a main project consuming a second one, which is located in a subdirectory:
name = "mainproject"
[myexe]
output_name = "runLib"
dependencies = ["mysubproject.mylib"]
directory = "myexe"
[[subproject]]
name = "mysubproject"
directory = "mylib"
See also test/subproject
Instead of directory, you may also specify url – analogous to external targets – to fetch an external repository and use it’s build config as a subproject configuration file. Note: the external repository may simply contain a single configuration file, specifying targets to be fetched from various other repositories (e.g. boost).
Multiple subprojects in the same file¶
A second simple example:
name = "mainproject"
[myexe]
output_name = "runLib"
dependencies = ["mysubproject.mylib"]
directory = "myexe"
[[subproject]]
name = "mysubproject"
[subproject.mylib]
target_type = "static library"
See also test/boost-filesystem