Skip to content

Dependencies

Kirill Semyonkin edited this page Oct 12, 2023 · 1 revision

Every dependency is located in the dependency level of the configuration file, and has an is value to determine its type. Its name is used only internally and to document your project (it does not have to match any other name). Dependencies are entirely optional.

Caching

When Build++ wants to use some dependency artifacts (compiled libraries) or includes (headers), it will copy them over into the cache directory. Each subdirectory is a dependency marked with an according version and profile (if applicable, otherwise just dependency alias).

└── cache
    └── dep-alias/0.1.0/default
        ├── lib
        └── include 

Currently Supported Types

Local Build++ Dependency

Use local build++, local build, local buildpp or local.

This will use a local directory that contains a Build++ project. It will build the project and copy over artifacts and includes into the cache folder.

dependency {
    other-project {
        is local build++
        path ../other-project   # required
        profile inherit         # optional,
                                # `inherit` will copy currently selected running profile,
                                # the profile `default` is used otherwise
    }
}

Compiled Library Dependency

Use local pair, local include or local library.

This will use two directories: one with the artifacts like .dll or .so, other is with the includes like .h, .hpp, .cuh, etc. Both will be copied over to cache.

dependency {
    msmpi {
        is local pair
        include C:/Program Files (x86)/Microsoft SDKs/MPI/Include   # required
        library C:/Program Files (x86)/Microsoft SDKs/MPI/Lib/x64   # required
    }
}

Types that will be added in future:

  • Git-stored Build++ project: git build++ (git buildpp, git build, git).
  • Downloadable compiled library: remote pair (remote include, remote library).
  • Also add more optional values may be added in the future to current types.