# Installation

## 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:&#x20;

* The bridge is typically installed in `C:\Program Files (x86)\BinhoMissionControlBridge`
* Add this path to your 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 a location of your choice.
3. Open a Terminal window and navigate to the directory where you extracted the binaries.
4. To make the binaries easily accessible, add the directory to your PATH environment variable. You can do this by editing your `~/.zshrc` (for Zsh users) or `~/.bashrc` (for Linux or macOS bash users):\
   \
   `nano ~/.zshrc`\
   \
   or, if you use 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 your 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. Inside this directory, you will find:
   * `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, you can 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 a location of your choice.
* To verify the installation, run the example applications in the examples directory.

### Installation Directory Structure

```
└── 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.binho.io/getting-started/c++-sdk/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
