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}" # "${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} "$" COMMENT "拷贝 VzNL 运行时 DLL 到输出目录") endif()