fwt_software/cmake/FindVmb.cmake

71 lines
2.0 KiB
CMake

# FindVmb.cmake - locate the Allied Vision Vimba X SDK (VmbC + VmbCPP).
#
# The Vimba X SDK is proprietary and must be installed manually from Allied
# Vision (https://www.alliedvision.com/en/products/software/vimba-x-sdk/).
# It is NOT available through any package manager.
#
# Search hints (any one is enough):
# -DVMB_HOME=/opt/VimbaX_2024-1 (CMake cache variable)
# export VIMBA_X_HOME=/opt/VimbaX... (environment variable)
#
# Provides imported targets:
# Vmb::VmbC Vmb::VmbCPP
# and variables: Vmb_FOUND, Vmb_INCLUDE_DIR, Vmb_C_LIBRARY, Vmb_CPP_LIBRARY
set(_vmb_hints
"${VMB_HOME}"
"$ENV{VMB_HOME}"
"$ENV{VIMBA_X_HOME}"
"$ENV{VIMBAX_HOME}"
/opt/VimbaX
/opt/VimbaX_2025-1
/opt/VimbaX_2024-1
/opt/vimbax
/usr/local/VimbaX
)
find_path(Vmb_INCLUDE_DIR
NAMES VmbCPP/VmbCPP.h VmbC/VmbC.h
HINTS ${_vmb_hints}
PATH_SUFFIXES api/include include
)
find_library(Vmb_C_LIBRARY
NAMES VmbC
HINTS ${_vmb_hints}
PATH_SUFFIXES api/lib lib lib64
)
find_library(Vmb_CPP_LIBRARY
NAMES VmbCPP
HINTS ${_vmb_hints}
PATH_SUFFIXES api/lib lib lib64
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Vmb
REQUIRED_VARS Vmb_INCLUDE_DIR Vmb_C_LIBRARY Vmb_CPP_LIBRARY
FAIL_MESSAGE
"Vimba X SDK not found. Install it from Allied Vision and set -DVMB_HOME=<sdk_root> \
or the VIMBA_X_HOME environment variable. To build without camera support, \
configure with -DWITH_VIMBA=OFF."
)
if(Vmb_FOUND)
if(NOT TARGET Vmb::VmbC)
add_library(Vmb::VmbC UNKNOWN IMPORTED)
set_target_properties(Vmb::VmbC PROPERTIES
IMPORTED_LOCATION "${Vmb_C_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Vmb_INCLUDE_DIR}")
endif()
if(NOT TARGET Vmb::VmbCPP)
add_library(Vmb::VmbCPP UNKNOWN IMPORTED)
set_target_properties(Vmb::VmbCPP PROPERTIES
IMPORTED_LOCATION "${Vmb_CPP_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Vmb_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "Vmb::VmbC")
endif()
endif()
mark_as_advanced(Vmb_INCLUDE_DIR Vmb_C_LIBRARY Vmb_CPP_LIBRARY)