Add unitest

This commit is contained in:
2026-04-06 07:11:04 +10:00
parent f57ed78763
commit e009257dfd
13 changed files with 225 additions and 77 deletions

View File

@@ -1,25 +1,37 @@
project(FireNSmokeDetection_Tests LANGUAGES CXX)
add_executable(${PROJECT_NAME}
FireNSmokeDetectionTest.cpp
# ============================================================================
# Common settings shared by both targets
# ============================================================================
set(COMMON_INCLUDES
${TEST_COMMON_DIR}
${ANSLIB_INCLUDE_DIR}
${OPENCV_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/ANSCustomFireNSmokeDetection
)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
target_compile_definitions(${PROJECT_NAME} PRIVATE
set(COMMON_DEFS
WIN32_LEAN_AND_MEAN
NOMINMAX
$<$<CONFIG:Debug>:_DEBUG>
$<$<CONFIG:Release>:NDEBUG>
)
target_include_directories(${PROJECT_NAME} PRIVATE
${TEST_COMMON_DIR}
${ANSLIB_INCLUDE_DIR}
${OPENCV_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/ANSCustomFireNSmokeDetection
# All runtime DLLs (ANSLIB, ANSODEngine, ANSLicensingSystem, ANSMOT, OpenCV, etc.)
# live in C:\ProgramData\ANSCENTER\Shared — same directory as the .lib files.
# Windows resolves them via the standard DLL search order.
# ============================================================================
# 1. Google Test unit/integration test executable
# ============================================================================
add_executable(${PROJECT_NAME}
FireNSmokeDetectionTest.cpp
)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
target_compile_definitions(${PROJECT_NAME} PRIVATE ${COMMON_DEFS})
target_include_directories(${PROJECT_NAME} PRIVATE ${COMMON_INCLUDES})
target_link_directories(${PROJECT_NAME} PRIVATE
${ANSLIB_LIB_DIR}
${OPENCV_LIB_DIR}
@@ -37,18 +49,31 @@ if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /W3 /sdl /permissive-)
endif()
# Copy required DLLs next to the test executable so Windows can find them
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
# ANSLIB.dll
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${ANSLIB_LIB_DIR}/ANSLIB.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>"
# OpenCV DLL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${OPENCV_BIN_DIR}/opencv_world4130.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>"
COMMENT "Copying runtime DLLs for ${PROJECT_NAME}"
)
include(GoogleTest)
gtest_discover_tests(${PROJECT_NAME} DISCOVERY_MODE PRE_TEST)
# ============================================================================
# 2. Interactive video demo executable (visual verification with OpenCV window)
# ============================================================================
add_executable(FireNSmokeDetection_Demo
main.cpp
)
target_compile_features(FireNSmokeDetection_Demo PRIVATE cxx_std_17)
target_compile_definitions(FireNSmokeDetection_Demo PRIVATE ${COMMON_DEFS})
target_include_directories(FireNSmokeDetection_Demo PRIVATE ${COMMON_INCLUDES})
target_link_directories(FireNSmokeDetection_Demo PRIVATE
${ANSLIB_LIB_DIR}
${OPENCV_LIB_DIR}
)
target_link_libraries(FireNSmokeDetection_Demo PRIVATE
ANSLIB
opencv_world4130
ANSCustomFireNSmokeDetection
)
if(MSVC)
target_compile_options(FireNSmokeDetection_Demo PRIVATE /W3 /sdl /permissive-)
endif()