You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

35 lines
1.8 KiB

cmake_minimum_required(VERSION 3.16)
find_program(DOTNET_EXECUTABLE NAMES dotnet)
if (DOTNET_EXECUTABLE AND ZXING_WRITERS AND ZXING_READERS AND ZXING_C_API)
# Check available .NET runtimes
execute_process(
COMMAND ${DOTNET_EXECUTABLE} --list-runtimes
OUTPUT_VARIABLE DOTNET_RUNTIMES
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (DOTNET_RUNTIMES MATCHES "Microsoft\\.NETCore\\.App (10\\.|1[1-9]\\.|[2-9][0-9])")
message(STATUS "Found dotnet with net10.0 runtime")
add_test(NAME DotNetTest COMMAND ${DOTNET_EXECUTABLE} test WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# Copy native library to test output directories so .NET can find it
# On macOS, DYLD_LIBRARY_PATH is ignored due to SIP when launching signed binaries
# The library may have version suffix (e.g., libZXing.3.0.0.dylib), so create symlink to base name
add_custom_target(DotNetCopyNative ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/ZXingCpp.Tests/bin/Debug/net10.0
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:ZXing> ${CMAKE_CURRENT_SOURCE_DIR}/ZXingCpp.Tests/bin/Debug/net10.0/
COMMAND ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE_NAME:ZXing> ${CMAKE_CURRENT_SOURCE_DIR}/ZXingCpp.Tests/bin/Debug/net10.0/$<TARGET_LINKER_FILE_NAME:ZXing>
DEPENDS ZXing
COMMENT "Copying ZXing library to .NET test output directories"
)
else()
message(STATUS "dotnet found but no compatible runtime available - skipping .NET tests")
endif()
elseif (NOT DOTNET_EXECUTABLE)
message(STATUS "dotnet not found - skipping .NET tests")
else()
message(STATUS "ZXING_READERS/ZXING_WRITERS/ZXING_C_API not enabled - skipping .NET tests")
endif()