Building a Project Using the SDK
Overview
The provided example applications can serve as a guide for creating a new project using the BMC C++ SDK. The examples are located in the examples
directory, and the instructions to build and execute them are similar to those related with building the C++ SDK Library.
Step by Step Guide
Here is a step-by-step guide on how to build a project that uses the library:
Navigate to the directory containing the project that uses the BMC C++ SDK.
Ensure that the development environment is properly set up. To do this, follow the instructions in the Environment Setup section of our guide.
Create a
CMakeLists.txt
file in the root directory of the project. An example of this file can be found below.Create a
build
directory inside the project.Navigate to the
build
directory.Configure CMake:
Linux/macOS
cmake -DLIBRARY_PATH=[Path to the dir containing the library] -DINCLUDE_PATH=[Path to the dir containing the include files] ..
Windows 64
cmake -DLIBRARY_PATH=[Path to the dir containing the library] -DINCLUDE_PATH=[Path to the dir containing the include files] .. -G "Visual Studio 17 2022" -A x64
Windows 32
cmake -DLIBRARY_PATH=[Path to the dir containing the library] -DINCLUDE_PATH=[Path to the dir containing the include files] .. -G "Visual Studio 17 2022" -A win32
Build with CMake:
cmake --build . --config Release
On Windows, verify that within the
build
directory, there is aRelease
(orDebug
) directory containing the project's executable. On Linux/macOS, look for the executable in thebuild
directory.
CMake Example for Building Applications
Below is an example of a CMakeLists.txt
file for building a sample application (i3c_cccs
) that uses the BMC C++ SDK as a dynamic library:
cmake_minimum_required(VERSION 3.5)
project(MyProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Accept library path as an argument
set(LIBRARY_PATH "" CACHE PATH "Path to the static library")
# Accept include path as an argument
set(INCLUDE_PATH "" CACHE PATH "Path to the include directory")
if(NOT LIBRARY_PATH)
message(FATAL_ERROR "LIBRARY_PATH is empty")
endif()
if(NOT INCLUDE_PATH)
message(FATAL_ERROR "INCLUDE_PATH is empty")
endif()
include(FetchContent)
FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz)
FetchContent_MakeAvailable(json)
# ---
# Target Definition, Properties and Commands
# ---
add_executable(my_project
main.cpp
)
set_target_properties(my_project PROPERTIES OUTPUT_NAME my_app)
# Include needed headers
target_include_directories(my_project PRIVATE
${INCLUDE_PATH}
)
# Link against needed libraries
if(WIN32)
target_link_libraries(my_project
nlohmann_json::nlohmann_json
${LIBRARY_PATH}/bmc_sdk.lib
)
# To link against the static library on Windows, use the following line instead:
# target_link_libraries(my_project ${LIBRARY_PATH}/bmc_sdk_static.lib)
elseif(APPLE)
target_link_libraries(my_project
nlohmann_json::nlohmann_json
${LIBRARY_PATH}/libbmc_sdk.dylib
)
# To link against the static library on macOS, use the following line instead:
# target_link_libraries(my_project ${LIBRARY_PATH}/libbmc_sdk_static.a)
else()
target_link_libraries(my_project
nlohmann_json::nlohmann_json
${LIBRARY_PATH}/libbmc_sdk.so
)
# To link against the static library on Linux, use the following line instead:
# target_link_libraries(my_project ${LIBRARY_PATH}/libbmc_sdk_static.a)
endif()
Last updated