Building a Project Using the SDK
Overview
Section titled “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
Section titled “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.txtfile in the root directory of the project. An example of this file can be found below. -
Create a
builddirectory inside the project. -
Navigate to the
builddirectory. -
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
builddirectory, there is aRelease(orDebug) directory containing the project’s executable. On Linux/macOS, look for the executable in thebuilddirectory.
CMake Example for Building Applications
Section titled “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 argumentset(LIBRARY_PATH "" CACHE PATH "Path to the static library")
# Accept include path as an argumentset(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 headerstarget_include_directories(my_project PRIVATE ${INCLUDE_PATH})
# Link against needed librariesif(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()
