77 lines
2.8 KiB
CMake
Executable File
77 lines
2.8 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")
|
|
set(VIZUMKIT_VZNLSDK_DIR
|
|
"E:/02_Modules/10_Projects/Active/GrabBag/Device/SDK/VzNLSDK"
|
|
CACHE PATH "Shared VzNL SDK root")
|
|
|
|
if(NOT WIN32 OR NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message(FATAL_ERROR "VizumCameraKit currently requires the Windows x64 VzNL SDK")
|
|
endif()
|
|
|
|
set(VIZUMKIT_VZNL_INCLUDE_DIR "${VIZUMKIT_VZNLSDK_DIR}/Inc")
|
|
set(VIZUMKIT_VZNL_RELEASE_DIR "${VIZUMKIT_VZNLSDK_DIR}/Windows/x64/Release")
|
|
if(NOT EXISTS "${VIZUMKIT_VZNL_INCLUDE_DIR}/VZNL_Common.h"
|
|
OR NOT EXISTS "${VIZUMKIT_VZNL_RELEASE_DIR}/VzKernel.dll")
|
|
message(FATAL_ERROR "VzNL SDK 3.6.20.116 not found under ${VIZUMKIT_VZNLSDK_DIR}")
|
|
endif()
|
|
|
|
# SDK 根目录切换后必须丢弃 find_library 遗留的旧绝对路径缓存。
|
|
unset(VIZUMKIT_VZNL_DETECT_LIB CACHE)
|
|
unset(VIZUMKIT_VZNL_GRAPHICS_LIB CACHE)
|
|
|
|
# ---- VzNL SDK 3.6.20.116 Windows x64 库 ----
|
|
find_library(VIZUMKIT_VZNL_DETECT_LIB
|
|
NAMES VzNLDetect
|
|
PATHS "${VIZUMKIT_VZNL_RELEASE_DIR}"
|
|
NO_DEFAULT_PATH)
|
|
find_library(VIZUMKIT_VZNL_GRAPHICS_LIB
|
|
NAMES VzNLGraphics
|
|
PATHS "${VIZUMKIT_VZNL_RELEASE_DIR}"
|
|
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_VZNL_RELEASE_DIR}")
|
|
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_VZNL_INCLUDE_DIR}")
|
|
|
|
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)。FORCE 清除旧 SDK 缓存路径。
|
|
set(VIZUMKIT_DLL_DIR "${VIZUMKIT_VZNL_RELEASE_DIR}"
|
|
CACHE PATH "VzNL runtime DLL directory for consumers to copy from" FORCE)
|
|
|
|
# ---- 冒烟测试(无相机也可运行:扫描并打印设备数) ----
|
|
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()
|