> Complete documentation index: [llms.txt](/llms.txt). Markdown versions of all pages are available by appending `.md` to page URLs.

# Installation

> What the legacy BMC C++ SDK Windows installer sets up, including the dynamic library, and how to install it.

:::caution
**Legacy.** This page covers the BMC C++ SDK, which needs the Binho Mission Control Bridge and gets no new features. For the Supernova and the Pulsar, use [CosmicSDK](/software/cosmicsdk/), which talks to the adapter directly. The BMC C++ SDK remains the C++ option for the Nova.

:::

## Overview

The BMC C++ SDK Windows installer sets up the necessary components for the SDK on the system. This includes:

* A dynamic library:
  * `bmc_sdk.dll` on Windows
  * `libbmc_sdk.dylib` on macOS
  * `libbmc_sdk.so` on Linux
* A static library:
  * `bmc_sdk_static.lib` on Windows
  * `libbmc_sdk_static.a` on macOS
  * `libbmc_sdk_static.a` on Linux
* Example applications to test the SDK
* Header files for integration (`include` directory)

## Prerequisite

As a prerequisite, the C++ SDK requires having the BinhoMissionControl Bridge (bmcbridge) utility installed and added to the PATH environment variable.

> _To improve modularization and streamline our update process, we've decided to separate the BinhoMissionControl Bridge from the BMC C++ SDK. The BMC Bridge, which connects high-level interfaces like Binho Mission Control to our host adapters, is updated frequently. By decoupling it from the BMC C++ SDK, we can deliver more focused updates to each component. Additionally, as we continue to meet the growing demand for a native C/C++ SDK, we're also planning to open-source the BMC C++ SDK to further empower the developer community._

### Windows

1. Download BMC Bridge installers:\
   \
   \- [BMC Bridge for Windows 32-bit](https://cdn.binho.io/sw/MissionControlBridge/1.1.1/BinhoMissionControlBridge-1.1.1-win32.exe)\
   \- [BMC Bridge for Windows 64-bit](https://cdn.binho.io/sw/MissionControlBridge/1.1.1/BinhoMissionControlBridge-1.1.1-x64.exe)<br>
2. Once installed, proceed with the following setup instructions:

* The bridge is typically installed in `C:\Program Files (x86)\BinhoMissionControlBridge`
* Add this path to the system's PATH environment variable.
  * Press `Win + R` , type `sysdm.cpl` , and press Enter.
  * Go to the Advanced tab, and click on Environment Variables.
  * In the System variables section, find the PATH variable, select it, and click Edit.
  * Click New and add `C:\Program Files (x86)\BinhoMissionControlBridge`
* To verify the installation, open Command Prompt and execute:
  * `bmcbridge --version`

### Linux and macOS

1. Download Linux or macOS binaries:\
   \- [Bridge macOS binaries for ARM](https://cdn.binho.io/sw/MissionControlBridge/1.1.1/bmc_bridge-1.1.1-mac-arm-binaries.zip)\
   \- [Bridge macOS binaries for Intel](https://cdn.binho.io/sw/MissionControlBridge/1.1.1/bmc_bridge-1.1.1-mac-intel-binaries.zip)\
   \- [Bridge Linux binaries](https://cdn.binho.io/sw/MissionControlBridge/1.1.1/bmc_bridge-1.1.1-linux-binaries.zip)
2. Extract the binaries and place the extracted folder in any location.
3. Open a Terminal window and navigate to the directory where the binaries were extracted.
4. Add the directory to the PATH environment variable so the binaries are found. Edit `~/.zshrc` (Zsh) or `~/.bashrc` (bash on Linux or macOS):\
   \
   `nano ~/.zshrc`\
   \
   or, for Bash:\
   \
   `~/.bashrc`
5. Add the following line at the end of the file:\
   \
   `export PATH=/path/to/your/extracted/folder:$PATH`\
   \
   Replace `/path/to/your/extracted/folder` with the actual path to the extracted folder.
6. Save the file and apply the changes by running:\
   \
   `source ~/.zshrc`\
   \
   or, for Bash users:\
   \
   `source ~/.bashrc`
7. To verify the installation, run the following command in Terminal:\
   \
   `bmcbridge --version`

## Installation of the C++ SDK

### Windows

#### Setup instructions

* Add `C:\Program Files (x86)\BinhoMissionControlSDK` to the system's PATH environment variable.

1. **Download the Installer:**\
   \
   \- [BMC C++ SDK for Windows 32-bit](https://cdn.binho.io/sw/MissionControlTowerSDK/latest/bmc_cpp_sdk-win32.exe)\
   \- [BMC C++ SDK for Windows 64-bit](https://cdn.binho.io/sw/MissionControlTowerSDK/latest/bmc_cpp_sdk-x64.exe)<br>
2. **Run the Installer:** Double-click on the installer and follow the on-screen prompts.
3. **Installation Directories:** By default, the SDK will be installed into the `c:\Program Files (x86)\BinhoMissionControlSDK` directory. The directory contains:
   * `bmc_sdk.dll`: The SDK dynamic link library.
   * `bmc_sdk_static.lib`: The SDK static library.
   * `README.md`: Read-me file in markdown format for users.
   * `examples`: A directory containing example applications.
   * `include`: A directory containing various header files necessary for SDK integration.
4. **Add to PATH Environment Variable.** For the applications to function correctly:\
   Both the `bmcbridge` and the BMC C++ SDK installation directories must be added to the system's PATH environment variable.
5. **Integration:** To integrate the BMC C++ SDK into a project:
   * Reference the SDK library using the static or dynamic library files.
   * Include necessary headers from the `include` directory.
6. **Test the Example Applications:** After setting up the PATH, run the example applications in the examples directory.

### Linux and macOS

* Download Linux or macOS binaries:\
  \
  \- [BMC C++ Linux binaries](https://cdn.binho.io/sw/MissionControlTowerSDK/latest/bmc_cpp_sdk-linux-binaries.zip)\
  \- [BMC C++ macOS binaries for ARM](https://cdn.binho.io/sw/MissionControlTowerSDK/latest/bmc_cpp_sdk-mac-arm-binaries.zip)\
  \- [BMC C++ macOS binaries for Intel](https://cdn.binho.io/sw/MissionControlTowerSDK/latest/bmc_cpp_sdk-mac-intel-binaries.zip)
* Extract the binaries and place the extracted folder in any location.
* To verify the installation, run the example applications in the examples directory.

### Installation Directory Structure

```text
└── BinhoMissionControlSDK
    ├── bmc_sdk.dll (or lib/libbmc_sdk.dylib on macOS, lib/libbmc_sdk.so on Linux)
    ├── bmc_sdk_static.lib (or lib/libbmc_sdk_static.a on macOS and Linux)
    ├── README.md
    ├── examples
    │   ├── list_devices
    │   ├── nova_breathing_leds
    │   ├── sample_app_using_sample_library
    │   ├── sample_library
    │   ├── supernova_101
    │   ├── supernova_i2c
    │   ├── supernova_i2c_benchmark
    │   ├── i3c_cccs
    │   ├── i3c_ibis
    │   ├── i3c_ICM42605
    │   ├── ...
    └── include
        ├── bridge_reader.h
        ├── BridgeReader_windows.h
        ├── CommandDispatcher.h
        ├── CommandManager.h
        ├── CommandRequest.h
        ├── CommandResponse.h
        └── definitions.h
```