Build and install
To build libosdp you must have cmake-3.0 (or above) and a C compiler installed.
This repository produces a libosdpstatic.a
and libosdp.so
. You can link
these with your application as needed (-losdp or -losdpstatic). Have a look at
sample/*
for details on how to consume this library.
This project supports two kinds of build systems: cmake and make.
Cmake Build
Cmake is the recommented way for building libosdp.
cmake -B build
cmake --build build --parallel
Optionally, you could install libosdp using,
cmake --build build --target install
Make Build
The make build is provided as a reference for people who wish to write their own Makefile to be chained in some other build system. Please see configure.sh –help for different configuration options.
./configure.sh
make
Build html docs
HTML docs of LibOSDP depends on python3, pip3, doxygen, sphinx, and breathe.
pip3 install -r doc/requirements.txt
cmake -B build
cmake --build build --target html_docs --parallel
Running the test suite
If you are adding features to LibOSDP, you might want to kick off the test suite to ensure that you changes are valid and has not regressed any other features. To do this run,
./scripts/run_tests.sh
Compile-time configuration options
LibOSDP can can be configured to enable/disable certain featured by passing the
-DCONFIG_XXX=ON/OFF
flag to cmake. Following table lists all such config
switches. For instance, if you want to also build static library, you can pass
the flag -DCONFIG_OSDP_BUILD_STATIC=ON
to cmake.
Configure.sh flag |
CMake OPTION |
Default |
Description |
---|---|---|---|
–packet-trace |
CONFIG_OSDP_PACKET_TRACE |
OFF |
Enable raw packet trace for diagnostics |
–data-trace |
CONFIG_OSDP_DATA_TRACE |
OFF |
Enable command/reply data buffer tracing |
–skip-mark |
CONFIG_OSDP_SKIP_MARK_BYTE |
OFF |
Don’t send the leading mark byte (0xFF) |
–no-colours |
CONFIG_DISABLE_PRETTY_LOGGING |
OFF |
Don’t colourize log outputs |
–static-pd |
CONFIG_OSDP_STATIC_PD |
OFF |
Setup PD single statically |
–lib-only |
CONFIG_OSDP_LIB_ONLY |
OFF |
Only build the library |
N/A |
CONFIG_BUILD_SANITIZER |
ON |
Enable different sanitizers during build |
N/A |
CONFIG_BUILD_SHARED |
ON |
Build shared library |
N/A |
CONFIG_BUILD_STATIC |
ON |
Build static library |
Add LibOSDP to your cmake project
Cmake find_package
Build and install LibOSDP to some standard location such /usr/local/
and
then use cmake’s popular find_package() method.
Cmake external project
Start by adding the following to your CMakeLists.txt
include(ExternalProject)
ExternalProject_Add(ext_libosdp
GIT_REPOSITORY https://github.com/cbsiddharth/libosdp.git
GIT_TAG v3.0.2 # update this to the latest version
SOURCE_DIR ${CMAKE_BINARY_DIR}/libosdp/src
BINARY_DIR ${CMAKE_BINARY_DIR}/libosdp/build
CONFIGURE_COMMAND cmake ${CMAKE_BINARY_DIR}/libosdp/src
BUILD_COMMAND make
INSTALL_COMMAND make install DESTDIR=${CMAKE_BINARY_DIR}/libosdp/install
)
include_directories("${CMAKE_BINARY_DIR}/libosdp/install/usr/local/include")
link_directories("${CMAKE_BINARY_DIR}/libosdp/install/usr/local/lib")
Next, you must add ext_libosdp
as a dependency to your target. That’s
it! now you can link your application to osdp library. Following example shows
how you can do this.
set(OSDP_APP osdp-app)
list(APPEND OSDP_APP_SRC
"src/main.c"
"src/more_source_files.c"
...
)
add_executable(${OSDP_APP} ${OSDP_APP_SRC})
add_dependencies(${OSDP_APP} ext_libosdp)
target_link_libraries(${OSDP_APP} osdp)
Using pkg-config
If you are familiar with pkg-config based dependency resolution methods, LibOSDP provides a libosdp.pc file which is installed along with the library.
Using vcpkg
vcpkg is a free and open-source C/C++ package manager maintained by Microsoft and the C++ community. A port for LibOSDP has already been merged to vcpkg upstream – this means you can consume LibOSDP directly from vcpkg and use all the generators it supports.
Follow the getting started document from Microsoft to setup vckpg. After that, you careate a new application and pull in LibOSDP as a dependency.
mkdir osdp_app && cd osdp_app
vcpkg new --application
vcpkg add port libosdp
After that, you can add your app sources, find the libosdp package and link it to your target with,
find_package(LibOSDP CONFIG REQUIRED)
target_link_libraries(
main
PRIVATE $<IF:$<TARGET_EXISTS:libosdp::osdp>,libosdp::osdp,libosdp::osdpstatic>
)
To build the project, you must set the CMAKE_TOOLCHAIN_FILE to the one provided by vcpkg for the dependencies to be pulled in correctly.
cmake -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -B build .
cmake --build build
Note: This is the recommended method to consume LibOSDP in Windows platforms.