CommonLibraries/CMakeLists.txt

59 lines
2.1 KiB
CMake
Executable File

cmake_minimum_required(VERSION 3.16)
project(VizumCameraKit CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(VIZUMKIT_EXTERNAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external")
# ---- VzNL SDK 库(与 Mark3DCalibration 同一套链接约定) ----
find_library(VIZUMKIT_VZNL_DETECT_LIB
NAMES VzNLDetect
PATHS ${VIZUMKIT_EXTERNAL_DIR}/VzNLSDK/lib
NO_DEFAULT_PATH)
find_library(VIZUMKIT_VZNL_GRAPHICS_LIB
NAMES VzNLGraphics
PATHS ${VIZUMKIT_EXTERNAL_DIR}/VzNLSDK/lib
NO_DEFAULT_PATH)
if(NOT VIZUMKIT_VZNL_DETECT_LIB OR NOT VIZUMKIT_VZNL_GRAPHICS_LIB)
message(FATAL_ERROR "Cannot find VzNL SDK libraries under ${VIZUMKIT_EXTERNAL_DIR}/VzNLSDK/lib")
endif()
# ---- 静态库目标 ----
add_library(VizumCameraKit STATIC src/VizumCamera.cpp)
target_include_directories(VizumCameraKit PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/src"
"${VIZUMKIT_EXTERNAL_DIR}" # <spdlog/spdlog.h>
"${VIZUMKIT_EXTERNAL_DIR}/VzNLSDK/include")
target_compile_definitions(VizumCameraKit PUBLIC ENABLE_VIZUM_CAMERA)
target_link_libraries(VizumCameraKit PUBLIC
${VIZUMKIT_VZNL_DETECT_LIB}
${VIZUMKIT_VZNL_GRAPHICS_LIB})
if(MSVC)
target_compile_options(VizumCameraKit PRIVATE /utf-8)
endif()
# 运行时 DLL 目录,供使用方 POST_BUILD 拷贝(严禁手动拷 DLL)
set(VIZUMKIT_DLL_DIR "${VIZUMKIT_EXTERNAL_DIR}/VzNLSDK/dll/Windows/x64/Release"
CACHE PATH "VzNL runtime DLL directory for consumers to copy from")
# ---- 冒烟测试(无相机也可运行:扫描并打印设备数) ----
option(VIZUMKIT_BUILD_EXAMPLES "Build kit_smoke example" ON)
if(VIZUMKIT_BUILD_EXAMPLES)
add_executable(kit_smoke examples/kit_smoke.cpp)
target_link_libraries(kit_smoke PRIVATE VizumCameraKit)
if(MSVC)
target_compile_options(kit_smoke PRIVATE /utf-8)
endif()
file(GLOB VIZUMKIT_RUNTIME_DLLS "${VIZUMKIT_DLL_DIR}/*.dll")
add_custom_command(TARGET kit_smoke POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${VIZUMKIT_RUNTIME_DLLS}
"$<TARGET_FILE_DIR:kit_smoke>"
COMMENT "拷贝 VzNL 运行时 DLL 到输出目录")
endif()