Building and Using bpt in Another Build System¶
One of bpt’s primary goals is to inter-operate with other build systems
cleanly. One of bpt’s primary outputs is machine-readable JSON summary of
its build results. bpt also supports emitting a include()-able CMake
module for consumption by older CMake versions that cannot parse the JSON
natively.
Generating a Build for Importing¶
In order to import and link against libraries built by bpt, one needs to first
run a build and generate the appropriate build results manifest. This manifest
is not generated globally: It is generated on a per-build basis as part of the
build process. The manifest will describe in build-system-agnostic terms how to
include and link against as set of libraries generated by a build.
bpt has first-class support for generating this index. The build-deps
subcommand of bpt will download and build a set of dependencies, and places
a JSON file that can be used to import the built results.
Note
Alternatively, for CMake projects, one can use the
--cmake option to write a CMake script that
defines the needed IMPORTED targets. Refer: Using bpt in a CMake Project
The build-deps command accepts a list of
dependency specifiers as positional
command-line arguments. bpt will attempt to generate a dependency solution
using that set of dependencies and will then obtain and build their sources.
Declaring Dependencies in a File¶
bpt build-deps accepts a list of
dependency specifiers as command line arguments, but it
may be useful to specify those requirements in a file.
bpt build-deps accepts a YAML file describing the dependencies of a project
as well. The only required property in the file is the dependencies key.
(The presence of any other key is an error.)
Here is a simple dependencies file that declares a single requirement:
dependencies.yaml¶dependencies: [
'neo-sqlite3^0.2.0'
]
See also
The dependencies array is an array of dependency specifier strings,
the same as those that would be used in a bpt.yaml project file.
Building Dependencies and the Manifest¶
We can invoke bpt build-deps and give it the path to this file:
$ bpt build-deps --deps-file dependencies.yaml
When finished, bpt will write the build results into a subdirectory called
_deps and generate a file named _built.json. This file is ready to be
imported into any build system that can understand its simple schema.
Note
The output directory and manifest filepath can be controlled with the
--out and
--built-json flags, respectively.
CMake Integration¶
See also
Using bpt libraries in CMake is a significant enough use case to warrant a
dedicated page. Refer: Using bpt in a CMake Project