|
|
|
# Shipping prebuilt binaries as wraps
|
|
|
|
|
|
|
|
A common dependency case, especially on Windows, is the need to
|
|
|
|
provide dependencies as prebuilt binaries rather than Meson projects
|
|
|
|
that you build from scratch. Common reasons include not having access
|
|
|
|
to source code, not having the time and effort to rewrite a legacy
|
|
|
|
system's build definitions to Meson or just the fact that compiling
|
|
|
|
the dependency projects takes too long.
|
|
|
|
|
|
|
|
Packaging a project is straightforward. As an example let's look at a
|
|
|
|
case where the project consists of one static library called `bob` and
|
|
|
|
some headers. To create a binary dependency project we put the static
|
|
|
|
library at the top level and headers in a subdirectory called
|
|
|
|
`include`. The Meson build definition would look like the following.
|
|
|
|
|
|
|
|
```meson
|
|
|
|
project('binary dep', 'c')
|
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
bin_dep = declare_dependency(
|
|
|
|
dependencies : cc.find_library('bob', dirs : meson.current_source_dir()),
|
|
|
|
include_directories : include_directories('include'))
|
|
|
|
```
|
|
|
|
|
|
|
|
Now you can use this subproject as if it was a Meson project:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
project('using dep', 'c')
|
|
|
|
bob_dep = subproject('bob').get_variable('bin_dep')
|
|
|
|
executable('prog', 'prog.c', dependencies : bob_dep)
|
|
|
|
```
|
|
|
|
|
|
|
|
Note that often libraries compiled with different compilers (or even
|
|
|
|
compiler flags) might not be compatible. If you do this, then you are
|
|
|
|
responsible for verifying that your libraries are compatible, Meson
|
|
|
|
will not check things for you.
|