# # This will create a Windows Runtime Component that can be consumed by any WinRT or UWP project. # You need to specify -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 at command line # to generate correctly UWP projects. You can also use Toolchain-Win10.cmake as tool chain file # which defined these for you. # # You can add EXTENSION_SDK_OUTPUT variable to deploy the build as UWP Extension SDK # e.g. -DEXTENSION_SDK_OUTPUT:STRING= # cmake_minimum_required (VERSION 3.14) project (ZXingWinRT) set (CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "" FORCE) set (WINRT ON) set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO" ) add_definitions (-DUNICODE -D_UNICODE) if (MSVC) add_definitions ( -DNOMINMAX -wd4996 ) endif() include(TargetArch.cmake) get_target_architecture (TARGET_ARCHITECTURE) set (TARGET_ARCHITECTURE ${TARGET_ARCHITECTURE} CACHE INTERNAL "") message (STATUS "Building for " ${TARGET_ARCHITECTURE}) if (NOT DEFINED EXTENSION_SDK_OUTPUT) set (EXTENSION_SDK_OUTPUT "" CACHE PATH "Path to folder parent of SDKManifest") endif() add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR}/../../core ${CMAKE_BINARY_DIR}/ZXingCore) file (GLOB SOURCE_FILES *.cpp) file (GLOB HEADER_FILES *.h) set (ROOT_NAMESPACE "ZXing") set (OUTPUT_FILE_BASE_NAME "ZXing") add_library (ZXingWinRT SHARED ${HEADER_FILES} ${SOURCE_FILES}) target_link_libraries (ZXingWinRT PRIVATE ZXing::ZXing ) target_compile_options (ZXingWinRT PRIVATE -D_WINRT_DLL -ZW # Consume Windows Runtime Extension ) set_target_properties (ZXingWinRT PROPERTIES LINK_FLAGS "/WINMD" # Generate Windows Metadata VS_GLOBAL_ROOTNAMESPACE "${ROOT_NAMESPACE}" OUTPUT_NAME ${OUTPUT_FILE_BASE_NAME} ) set_target_properties (ZXingWinRT ZXing PROPERTIES VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION "10.0.10240.0" ) if (EXTENSION_SDK_OUTPUT) add_custom_command (TARGET ZXingWinRT POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different "$" "${EXTENSION_SDK_OUTPUT}/Redist/$<$:Retail>$<$:Debug>/${TARGET_ARCHITECTURE}/$" COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different "$/${ROOT_NAMESPACE}.winmd" "${EXTENSION_SDK_OUTPUT}/References/CommonConfiguration/Neutral/${ROOT_NAMESPACE}.winmd" COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different "$/${ROOT_NAMESPACE}.pri" "${EXTENSION_SDK_OUTPUT}/References/CommonConfiguration/Neutral/${ROOT_NAMESPACE}.pri" ) endif()