mirror of https://github.com/emgucv/emgucv.git
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.
1719 lines
70 KiB
1719 lines
70 KiB
# --------------------------------------------------------
|
|
# Copyright (C) 2004-2018 by EMGU Corporation. All rights reserved.
|
|
#
|
|
# Root CMake file for Emgu CV
|
|
#
|
|
# From the off-tree build directory, invoke:
|
|
# $ cmake <PATH_TO_EMGUCV_ROOT>
|
|
#
|
|
# --------------------------------------------------------
|
|
|
|
PROJECT(emgucv)
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.1)
|
|
|
|
IF( NOT (NETFX_CORE OR ANDROID OR IOS ) )
|
|
|
|
# IF (NOT WIN32)
|
|
# SET(CMAKE_C_FLAGS_RELEASE "-fPIC ${CMAKE_C_FLAGS_RELEASE}")
|
|
# SET(CMAKE_CXX_FLAGS_RELEASE "-fPIC ${CMAKE_CXX_FLAGS_RELEASE}")
|
|
# SET(CMAKE_C_FLAGS_DEBUG "-fPIC ${CMAKE_C_FLAGS_DEBUG}")
|
|
# SET(CMAKE_CXX_FLAGS_DEBUG "-fPIC ${CMAKE_CXX_FLAGS_DEBUG}")
|
|
# SET(CMAKE_EXE_LINKER_FLAGS "-fPIC ${CMAKE_EXE_LINKER_FLAGS}")
|
|
# SET(CMAKE_SHARED_LINKER_FLAGS "-fPIC ${CMAKE_SHARED_LINKER_FLAGS}")
|
|
# ENDIF()
|
|
IF (WIN32)
|
|
SET(BUILD_SHARED_LIBS_CACHE ${BUILD_SHARED_LIBS})
|
|
SET(BUILD_SHARED_LIBS OFF)
|
|
SET(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON)
|
|
|
|
ADD_SUBDIRECTORY(vtk) # always build vtk as static library
|
|
|
|
|
|
SET(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_CACHE})
|
|
ENDIF()
|
|
# IF (NOT WIN32)
|
|
# SET(CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE_CACHE} )
|
|
# SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE_CACHE})
|
|
# ENDIF()
|
|
ENDIF()
|
|
|
|
SET(OPENCV_SUBFOLDER ${CMAKE_CURRENT_SOURCE_DIR}/opencv)
|
|
SET(OPENCV_CONTRIB_SUBFOLDER ${CMAKE_CURRENT_SOURCE_DIR}/opencv_contrib)
|
|
|
|
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
|
IF (NOT ANDROID)
|
|
|
|
SET(CSC_PREFERRED_VERSION "4.0")
|
|
IF((NOT NETFX_CORE) AND MSVC)
|
|
#SET CSC 3.5 as the prefered compiler for EMGU CV
|
|
SET(CSC_TARGET_FRAMEWORK "3.5" CACHE STRING "C# target framework")
|
|
ELSE()
|
|
#SET CSC 4.5 (in the .Net framework 4.0 folder) as the prefered compiler for EMGU CV
|
|
SET(CSC_TARGET_FRAMEWORK "" CACHE STRING "C# target framework")
|
|
ENDIF()
|
|
|
|
FIND_PACKAGE(CSharp REQUIRED)
|
|
INCLUDE (CSharpMacros)
|
|
ENDIF()
|
|
|
|
INCLUDE (CheckTargetArch)
|
|
INCLUDE (OpenCVVersion)
|
|
|
|
SET(LIBRARY_3RDPARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib/3rdParty)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Autodetect if we are in a GIT repository
|
|
# ----------------------------------------------------------------------------
|
|
FIND_PROGRAM(GIT_PATH git)
|
|
FIND_PROGRAM(WC_PATH wc PATHS "c:/cygwin64/bin" "c:/cygwin/bin")
|
|
MARK_AS_ADVANCED(force GIT_PATH WC_PATH)
|
|
IF(GIT_PATH AND WC_PATH)
|
|
MESSAGE(STATUS "Extracting Emgu CV git version, please wait...")
|
|
EXECUTE_PROCESS(
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
COMMAND ${GIT_PATH} log --oneline
|
|
COMMAND ${WC_PATH} -l
|
|
OUTPUT_VARIABLE GITVERSION_RESULT)
|
|
#MESSAGE(STATUS "COMMAND: ${GIT_PATH} log --oneline | ${WC_PATH} -l")
|
|
STRING(REGEX REPLACE "^([0123456789]+).*" "\\1" EMGUCV_GITVERSION "${GITVERSION_RESULT}")
|
|
STRING(STRIP "${EMGUCV_GITVERSION}" EMGUCV_GITVERSION)
|
|
IF(EMGUCV_GITVERSION MATCHES "^$" OR EMGUCV_GITVERSION MATCHES "^-")
|
|
# This is NOT a git repository:
|
|
SET(EMGUCV_GITVERSION "0")
|
|
ENDIF()
|
|
MESSAGE(STATUS "Emgu CV GIT VERSION: ${EMGUCV_GITVERSION}")
|
|
ELSE()
|
|
# We don't have git or wc:
|
|
SET(EMGUCV_GITVERSION "0")
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Check if 32bit or 64-bit
|
|
# ----------------------------------------------------------------------------
|
|
CHECK_TARGET_ARCH()
|
|
|
|
IF (WIN32)
|
|
MESSAGE(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
|
|
IF(TARGET_ARCH_64)
|
|
SET(EMGUCV_ARCH win64)
|
|
ELSE()
|
|
#ELSEIF ( ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") )
|
|
MESSAGE(STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
|
|
STRING(FIND "${CMAKE_GENERATOR}" "ARM" IS_ARM)
|
|
IF(IS_ARM GREATER -1)
|
|
SET(EMGUCV_ARCH arm)
|
|
ELSE()
|
|
SET(EMGUCV_ARCH win32)
|
|
ENDIF()
|
|
#ELSE()
|
|
# SET(EMGUCV_ARCH win32)
|
|
ENDIF()
|
|
ELSE(WIN32)
|
|
SET(EMGUCV_ARCH ${CMAKE_SYSTEM_NAME})
|
|
ENDIF(WIN32)
|
|
|
|
MESSAGE(STATUS "Building for ${EMGUCV_ARCH}")
|
|
|
|
IF(WIN32 AND CV_ICC)
|
|
# SET(CV_ICC_ADDITIONAL_FLAGS_RELEASE "/O3 /QaxCORE-AVX2,AVX,SSE4.1,SSE3 /Qparallel /Qopt-report:1 /Qopt-report-phase:vec /Qopt-report-phase:par /Qopt-report-file:stderr /Qipo /Qunroll-aggressive")
|
|
SET(CV_ICC_ADDITIONAL_FLAGS_RELEASE "/O3 /QaxCORE-AVX2,AVX,SSE4.1,SSE3 /Qparallel /Qopt-report:1 /Qopt-report-phase:vec /Qopt-report-phase:par /Qipo /Qrestrict /Ot")
|
|
STRING(REGEX REPLACE "/O2" ${CV_ICC_ADDITIONAL_FLAGS_RELEASE} CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
|
STRING(REGEX REPLACE "/O2" ${CV_ICC_ADDITIONAL_FLAGS_RELEASE} CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:\"libcmt\"")
|
|
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB:\"libcmt\"")
|
|
set(EMGUCV_PLATFORM_TOOLSET "Intel C++ Compiler 18.0" CACHE STRING "Platform toolset for Visual Studio")
|
|
ENDIF()
|
|
|
|
IF(WIN32 AND NOT MINGW)
|
|
SET(NETFX_CORE OFF CACHE BOOL "Build Windows Store App")
|
|
# IF(NETFX_CORE)
|
|
# add_definitions(-DWINAPI_FAMILY=WINAPI_FAMILY_APP -DWINVER=0x0602 -D_WIN32_WINNT=0x0602)
|
|
# add_definitions(-D_UNICODE)
|
|
# ENDIF()
|
|
ENDIF()
|
|
|
|
SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/libs)
|
|
|
|
IF(NOT WIN32)
|
|
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/libs)
|
|
ENDIF()
|
|
|
|
IF(ANDROID)
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/android/${ANDROID_ABI}")
|
|
ELSEIF(WIN32)
|
|
IF ("${EMGUCV_ARCH}" STREQUAL "win64")
|
|
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
|
IF(CMAKE_SYSTEM_VERSION MATCHES 8.1)
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/store8_1/x64")
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/UWP/x64")
|
|
ENDIF()
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/x64")
|
|
ENDIF()
|
|
ELSEIF("${EMGUCV_ARCH}" STREQUAL "arm")
|
|
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone")
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/phone8_1/arm")
|
|
ELSE()
|
|
IF(CMAKE_SYSTEM_VERSION MATCHES 10.0)
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/UWP/arm")
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/arm")
|
|
ENDIF()
|
|
ENDIF()
|
|
ELSE()
|
|
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone")
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/phone8_1/x86")
|
|
ELSEIF("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
|
|
IF(CMAKE_SYSTEM_VERSION MATCHES 10.0)
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/UWP/x86")
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/store8_1/x86")
|
|
ENDIF()
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/x86")
|
|
ENDIF()
|
|
ENDIF()
|
|
#ELSEIF(APPLE)
|
|
# SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/lib")
|
|
ELSEIF(APPLE AND NOT IOS)
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "/osx")
|
|
ELSE()
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER "")
|
|
ENDIF()
|
|
|
|
SET(UNMANAGED_LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/libs/${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER}")
|
|
IF(ANDROID)
|
|
SET(LIBRARY_OUTPUT_PATH ${UNMANAGED_LIBRARY_OUTPUT_PATH})
|
|
ENDIF()
|
|
FILE(MAKE_DIRECTORY ${UNMANAGED_LIBRARY_OUTPUT_PATH})
|
|
|
|
SET(UNMANAGED_DLL_EXTRA)
|
|
|
|
MACRO(CHECK_BINARY_EXIST folder pattern property_name second_check)
|
|
#IF("${UNMANAGED_LIBRARY_OUTPUT_PATH}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/${folder}")
|
|
# SET(${property_name} ON)
|
|
#ELSE()
|
|
FILE(GLOB DLL_LIST "${CMAKE_CURRENT_SOURCE_DIR}/${folder}/${pattern}")
|
|
LIST(LENGTH DLL_LIST DLL_LIST_LENGTH)
|
|
IF(DLL_LIST_LENGTH GREATER 0)
|
|
LIST(APPEND UNMANAGED_DLL_EXTRA ${DLL_LIST})
|
|
MESSAGE(STATUS "Including the following files in package: ${DLL_LIST}")
|
|
INSTALL(
|
|
FILES
|
|
${DLL_LIST}
|
|
DESTINATION ${folder}
|
|
COMPONENT emgucv_binary
|
|
)
|
|
SET(${property_name} ON)
|
|
ELSE()
|
|
SET(${property_name} ${second_check})
|
|
ENDIF()
|
|
#ENDIF()
|
|
#MESSAGE(STATUS "Property - ${property_name}: ${${property_name}}")
|
|
IF(${${property_name}})
|
|
MESSAGE(STATUS "${property_name}: ${${property_name}}")
|
|
ENDIF()
|
|
ENDMACRO()
|
|
|
|
#MESSAGE(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
|
|
SET(IS_IOS_BUILD OFF)
|
|
IF(IOS)
|
|
SET(IS_IOS_BUILD ON)
|
|
MESSAGE(STATUS "IS_IOS_BUILD: ${IS_IOS_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/iOS" "libcvextern.a" HAVE_IOS ${IS_IOS_BUILD})
|
|
#IF(IS_IOS_BUILD)
|
|
# SET(HAVE_IOS ON)
|
|
#ENDIF()
|
|
|
|
SET(IS_OSX_BUILD OFF)
|
|
IF(APPLE AND (NOT IOS))
|
|
SET(IS_OSX_BUILD ON)
|
|
MESSAGE(STATUS "IS_OSX_BUILD: ${IS_OSX_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/osx" "libcvextern.dylib" HAVE_OSX ${IS_OSX_BUILD})
|
|
|
|
SET(IS_ANDROID_ARM64_V8A_BUILD OFF)
|
|
IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "arm64-v8a"))
|
|
SET(IS_ANDROID_ARM64_V8A_BUILD ON)
|
|
MESSAGE(STATUS "IS_ANDROID_ARM64_V8A_BUILD: ${IS_ANDROID_ARM64_V8A_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/android/arm64-v8a" "*.so" HAVE_ANDROID_ARM64_V8A ${IS_ANDROID_ARM64_V8A_BUILD})
|
|
|
|
SET(IS_ANDROID_ARMEABI_BUILD OFF)
|
|
IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "armeabi"))
|
|
SET(IS_ANDROID_ARMEABI_BUILD ON)
|
|
MESSAGE(STATUS "IS_ANDROID_ARMEABI_BUILD: ${IS_ANDROID_ARMEABI_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/android/armeabi" "*.so" HAVE_ANDROID_ARMEABI ${IS_ANDROID_ARMEABI_BUILD})
|
|
|
|
SET(IS_ANDROID_ARMEABI_V7A_BUILD OFF)
|
|
IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "armeabi-v7a"))
|
|
SET(IS_ANDROID_ARMEABI_V7A_BUILD ON)
|
|
MESSAGE(STATUS "IS_ANDROID_ARMEABI_V7A_BUILD: ${IS_ANDROID_ARMEABI_V7A_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/android/armeabi-v7a" "*.so" HAVE_ANDROID_ARMEABI_V7A ${IS_ANDROID_ARMEABI_V7A_BUILD})
|
|
|
|
SET(IS_ANDROID_X86_BUILD OFF)
|
|
IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "x86"))
|
|
SET(IS_ANDROID_X86_BUILD ON)
|
|
MESSAGE(STATUS "IS_ANDROID_X86_BUILD: ${IS_ANDROID_X86_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/android/x86" "*.so" HAVE_ANDROID_X86 ${IS_ANDROID_X86_BUILD})
|
|
|
|
SET(IS_ANDROID_X86_64_BUILD OFF)
|
|
IF(ANDROID AND ("${ANDROID_ABI}" STREQUAL "x86_64"))
|
|
SET(IS_ANDROID_X86_64_BUILD ON)
|
|
MESSAGE(STATUS "IS_ANDROID_X86_64_BUILD: ${IS_ANDROID_X86_64_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/android/x86_64" "*.so" HAVE_ANDROID_X86_64 ${IS_ANDROID_X86_64_BUILD})
|
|
|
|
SET(HAVE_ANDROID OFF)
|
|
IF(HAVE_ANDROID_ARM64_V8A OR HAVE_ANDROID_ARMEABI OR HAVE_ANDROID_ARMEABI_V7A OR HAVE_ANDROID_X86 OR HAVE_ANDROID_X86_64)
|
|
SET(HAVE_ANDROID ON)
|
|
ENDIF()
|
|
IF(HAVE_ANDROID)
|
|
MESSAGE(STATUS "HAVE_ANDROID: ON")
|
|
ENDIF()
|
|
|
|
|
|
SET(IS_WINSTORE_81_X86_BUILD OFF)
|
|
IF(("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") AND (CMAKE_SYSTEM_VERSION MATCHES 8.1) AND ("${EMGUCV_ARCH}" STREQUAL "win32"))
|
|
SET(IS_WINSTORE_81_X86_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINSTORE_81_X86_BUILD: ${IS_WINSTORE_81_X86_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/store8_1/x86" "*.dll" HAVE_WINSTORE_81_X86 ${IS_WINSTORE_81_X86_BUILD})
|
|
|
|
SET(IS_WINSTORE_81_X64_BUILD OFF)
|
|
IF(("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") AND (CMAKE_SYSTEM_VERSION MATCHES 8.1) AND ("${EMGUCV_ARCH}" STREQUAL "win64"))
|
|
SET(IS_WINSTORE_81_X64_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINSTORE_81_X64_BUILD: ${IS_WINSTORE_81_X64_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/store8_1/x64" "*.dll" HAVE_WINSTORE_81_X64 ${IS_WINSTORE_81_X64_BUILD})
|
|
|
|
SET(IS_WINPHONE_81_X86_BUILD OFF)
|
|
IF( ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone") AND ("${EMGUCV_ARCH}" STREQUAL "win32") )
|
|
SET(IS_WINPHONE_81_X86_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINPHONE_81_X86_BUILD: ${IS_WINPHONE_81_X86_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/phone8_1/x86" "*.dll" HAVE_WINPHONE_81_X86 ${IS_WINPHONE_81_X86_BUILD})
|
|
|
|
SET(IS_WINPHONE_81_ARM_BUILD OFF)
|
|
IF( ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone") AND ("${EMGUCV_ARCH}" STREQUAL "arm") )
|
|
SET(IS_WINPHONE_81_ARM_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINPHONE_81_ARM_BUILD: ${IS_WINPHONE_81_ARM_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/phone8_1/arm" "*.dll" HAVE_WINPHONE_81_ARM ${IS_WINPHONE_81_ARM_BUILD})
|
|
|
|
SET(IS_WINSTORE_10_X86_BUILD OFF)
|
|
IF( ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") AND (CMAKE_SYSTEM_VERSION MATCHES 10.0) AND ("${EMGUCV_ARCH}" STREQUAL "win32") )
|
|
SET(IS_WINSTORE_10_X86_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINSTORE_10_X86_BUILD: ${IS_WINSTORE_10_X86_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/UWP/x86" "*.dll" HAVE_WINSTORE_10_X86 ${IS_WINSTORE_10_X86_BUILD})
|
|
|
|
SET(IS_WINSTORE_10_X64_BUILD OFF)
|
|
IF( ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") AND (CMAKE_SYSTEM_VERSION MATCHES 10.0) AND ("${EMGUCV_ARCH}" STREQUAL "win64") )
|
|
SET(IS_WINSTORE_10_X64_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINSTORE_10_X64_BUILD: ${IS_WINSTORE_10_X64_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/UWP/x64" "*.dll" HAVE_WINSTORE_10_X64 ${IS_WINSTORE_10_X64_BUILD})
|
|
|
|
SET(IS_WINSTORE_10_ARM_BUILD OFF)
|
|
IF(("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") AND (CMAKE_SYSTEM_VERSION MATCHES 10.0) AND ("${EMGUCV_ARCH}" STREQUAL "arm"))
|
|
SET(IS_WINSTORE_10_ARM_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINSTORE_10_ARM_BUILD: ${IS_WINSTORE_10_ARM_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/UWP/arm" "*.dll" HAVE_WINSTORE_10_ARM ${IS_WINSTORE_10_ARM_BUILD})
|
|
|
|
SET(IS_WINDESKTOP_X86_BUILD OFF)
|
|
IF (WIN32 AND ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") AND ("${EMGUCV_ARCH}" STREQUAL "win32") AND (NOT ANDROID))
|
|
SET (IS_WINDESKTOP_X86_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINDESKTOP_X86_BUILD: ${IS_WINDESKTOP_X86_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/x86" "*.dll" HAVE_WINDESKTOP_X86 ${IS_WINDESKTOP_X86_BUILD})
|
|
|
|
SET (IS_WINDESKTOP_X64_BUILD OFF)
|
|
IF (WIN32 AND ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") AND ("${EMGUCV_ARCH}" STREQUAL "win64") AND (NOT ANDROID))
|
|
SET (IS_WINDESKTOP_X64_BUILD ON)
|
|
MESSAGE(STATUS "IS_WINDESKTOP_X64_BUILD: ${IS_WINDESKTOP_X64_BUILD}")
|
|
ENDIF()
|
|
CHECK_BINARY_EXIST("libs/x64" "*.dll" HAVE_WINDESKTOP_X64 ${IS_WINDESKTOP_X64_BUILD})
|
|
|
|
IF(HAVE_WINDESKTOP_X86 AND HAVE_WINDESKTOP_X64)
|
|
SET(WINDESKTOP_LABEL "-windesktop")
|
|
ELSEIF(HAVE_WINDESKTOP_X86)
|
|
SET(WINDESKTOP_LABEL "-windesktop_x86")
|
|
ELSEIF(HAVE_WINDESKTOP_X64)
|
|
SET(WINDESKTOP_LABEL "-windesktop_x64")
|
|
ELSE()
|
|
SET(WINDESKTOP_LABEL "")
|
|
ENDIF()
|
|
|
|
IF(HAVE_WINSTORE_81_X86 AND HAVE_WINSTORE_81_X64)
|
|
SET(WINSTORE_81_LABEL "-winstore81")
|
|
ELSEIF(HAVE_WINSTORE_81_X86)
|
|
SET(WINSTORE_81_LABEL "-winstore81_x86")
|
|
ELSEIF(HAVE_WINSTORE_81_X64)
|
|
SET(WINSTORE_81_LABEL "-winstore81_x64")
|
|
ELSE()
|
|
SET(WINSTORE_81_LABEL "")
|
|
ENDIF()
|
|
|
|
IF(HAVE_WINPHONE_81_X86 AND HAVE_WINPHONE_81_ARM)
|
|
SET(WINPHONE_81_LABEL "-winphone81")
|
|
ELSEIF(HAVE_WINPHONE_81_X86)
|
|
SET(WINPHONE_81_LABEL "-winphone81-x86")
|
|
ELSEIF(HAVE_WINPHONE_81_ARM)
|
|
SET(WINPHONE_81_LABEL "-winphone81-arm")
|
|
ELSE()
|
|
SET(WINPHONE_81_LABEL "")
|
|
ENDIF()
|
|
|
|
SET(WIN_81_LABEL "${WINSTORE_81_LABEL}${WINPHONE_81_LABEL}")
|
|
IF("${WIN_81_LABEL}" STREQUAL "-winstore81-winphone81" )
|
|
SET(WIN_81_LABEL "-windows81")
|
|
ENDIF()
|
|
|
|
SET(WINSTORE_10_LABEL "")
|
|
IF(HAVE_WINSTORE_10_X64)
|
|
SET(WINSTORE_10_LABEL "${WINSTORE_10_LABEL}_x64")
|
|
ENDIF()
|
|
IF(HAVE_WINSTORE_10_X86)
|
|
SET(WINSTORE_10_LABEL "${WINSTORE_10_LABEL}_x86")
|
|
ENDIF()
|
|
IF(HAVE_WINSTORE_10_ARM)
|
|
SET(WINSTORE_10_LABEL "${WINSTORE_10_LABEL}_arm")
|
|
ENDIF()
|
|
|
|
IF("${WINSTORE_10_LABEL}" STREQUAL "_x64_x86_arm")
|
|
SET(WINSTORE_10_LABEL "-UWP")
|
|
ELSEIF(NOT ("${WINSTORE_10_LABEL}" STREQUAL ""))
|
|
SET(WINSTORE_10_LABEL "-UWP${WINSTORE_10_LABEL}")
|
|
ENDIF()
|
|
|
|
SET(WINDOWS_LABEL "${WIN_81_LABEL}${WINSTORE_10_LABEL}${WINDESKTOP_LABEL}")
|
|
IF ("${WINDOWS_LABEL}" STREQUAL "-UWP-windesktop")
|
|
SET(WINDOWS_LABEL "-windows")
|
|
ENDIF()
|
|
|
|
SET(IOS_LABEL "")
|
|
IF(HAVE_IOS)
|
|
SET(IOS_LABEL "-ios")
|
|
ENDIF()
|
|
|
|
SET(OSX_LABEL "")
|
|
IF(HAVE_OSX)
|
|
SET(OSX_LABEL "-osx")
|
|
ENDIF()
|
|
|
|
|
|
SET(ANDROID_LABEL "")
|
|
IF(HAVE_ANDROID_ARM64_V8A)
|
|
SET(ANDROID_LABEL "${ANDROID_LABEL}-arm64-v8a")
|
|
ENDIF()
|
|
IF(HAVE_ANDROID_ARMEABI)
|
|
SET(ANDROID_LABEL "${ANDROID_LABEL}-armeabi")
|
|
ENDIF()
|
|
IF(HAVE_ANDROID_ARMEABI_V7A)
|
|
SET(ANDROID_LABEL "${ANDROID_LABEL}-armeabi-v7a")
|
|
ENDIF()
|
|
IF(HAVE_ANDROID_X86)
|
|
SET(ANDROID_LABEL "${ANDROID_LABEL}-x86")
|
|
ENDIF()
|
|
IF(HAVE_ANDROID_X86_64)
|
|
SET(ANDROID_LABEL "${ANDROID_LABEL}-x86_64")
|
|
ENDIF()
|
|
|
|
CHECK_BINARY_EXIST("libs" "Emgu.CV.World*" HAVE_PREBUILD_EMGU_CV_WORLD OFF)
|
|
|
|
IF("${ANDROID_LABEL}" STREQUAL "-arm64-v8a-armeabi-armeabi-v7a-x86-x86_64")
|
|
SET(ANDROID_LABEL "-android")
|
|
ELSEIF(NOT ("${ANDROID_LABEL}" STREQUAL ""))
|
|
SET(ANDROID_LABEL "-android${ANDROID_LABEL}")
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Setup Package information
|
|
# ----------------------------------------------------------------------------
|
|
SET(PACKAGE "${PROJECT_NAME}")
|
|
SET(CPACK_PACKAGE_CONTACT "Emgu CV SUPPORT <support@emgu.com>")
|
|
SET(PACKAGE_BUGREPORT "${CPACK_PACKAGE_CONTACT}")
|
|
SET(PACKAGE_NAME "${PROJECT_NAME}")
|
|
|
|
#SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}")
|
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Emgu CV is a cross platform .Net wrapper to the OpenCV image processing library.")
|
|
|
|
SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}${IOS_LABEL}${ANDROID_LABEL}${WINDOWS_LABEL}${OSX_LABEL}")
|
|
|
|
#STRING(LENGTH "${CPACK_PACKAGE_NAME}" PACKAGE_NAME_LENGTH)
|
|
#IF (${PACKAGE_NAME_LENGTH} GREATER 30)
|
|
# SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}-mixed")
|
|
# STRING(LENGTH "${CPACK_PACKAGE_NAME}" PACKAGE_NAME_LENGTH)
|
|
#ENDIF()
|
|
|
|
#IF (APPLE)
|
|
# SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-osx")
|
|
#ENDIF()
|
|
|
|
IF(WITH_CUDA)
|
|
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-cuda")
|
|
ENDIF()
|
|
|
|
IF(WITH_OPENNI)
|
|
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-openni")
|
|
ENDIF()
|
|
|
|
IF(CV_ICC)
|
|
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-icc")
|
|
ENDIF()
|
|
|
|
IF(WITH_TBB)
|
|
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-tbb")
|
|
ENDIF()
|
|
|
|
IF(WITH_IPP)
|
|
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-ipp")
|
|
ENDIF()
|
|
|
|
IF("${CPACK_PACKAGE_NAME}" STREQUAL "${PACKAGE_NAME}-ios-android-windows-osx-icc-tbb-ipp")
|
|
SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}-pro")
|
|
ENDIF()
|
|
|
|
|
|
SET(CPACK_PACKAGE_VENDOR "Emgu Corporation")
|
|
SET(CPACK_PACKAGE_VERSION_MAJOR ${OPENCV_VERSION_MAJOR})
|
|
SET(CPACK_PACKAGE_VERSION_MINOR ${OPENCV_VERSION_MINOR})
|
|
SET(CPACK_PACKAGE_VERSION_PATCH ${OPENCV_VERSION_PATCH})
|
|
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${EMGUCV_GITVERSION}")
|
|
IF(ANDROID)
|
|
SET(CPACK_PACKAGE_FILE_NAME "lib${CPACK_PACKAGE_NAME}")
|
|
ELSE()
|
|
SET(CPACK_PACKAGE_FILE_NAME "lib${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "Package name will be ${CPACK_PACKAGE_NAME}")
|
|
FILE(WRITE "emgucv.version.txt" "${CPACK_PACKAGE_VERSION}")
|
|
|
|
#IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Commercial.License.txt")
|
|
# SET(LICENSE_FILE_NAME "Emgu.CV.Commercial.License.txt")
|
|
#ELSE()
|
|
SET(LICENSE_FILE_NAME "Emgu.CV.License.txt")
|
|
|
|
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/${LICENSE_FILE_NAME}")
|
|
|
|
IF (WIN32 OR APPLE)
|
|
SET(CPACK_PACKAGE_CLI_FOLDER bin)
|
|
ELSE ()
|
|
SET(CPACK_PACKAGE_CLI_FOLDER lib/cli/${PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR})
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Build opencv and Emgu.CV.Extern
|
|
# ----------------------------------------------------------------------------
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${UNMANAGED_LIBRARY_OUTPUT_PATH}" )
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
|
|
|
#SET(CMAKE_ARCHIEVE_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
|
#SET(CMAKE_ARCHIEVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIEVE_OUTPUT_DIRECTORY}")
|
|
#SET(CMAKE_ARCHIEVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIEVE_OUTPUT_DIRECTORY}")
|
|
|
|
#SET(CMAKE_INSTALL_PREFIX_COPY ${CMAKE_INSTALL_PREFIX})
|
|
#SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER})
|
|
#SET(CPACK_PACKAGING_INSTALL_PREFIX ${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER})
|
|
#SET(DESTDIR ${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER})
|
|
#SET(CPACK_OUTPUT_FILE_PREFIX "x64")
|
|
|
|
SET(ENTRYPOINT_CS_STRING "")
|
|
SET(ENTRYPOINT_MODULES_STRING "")
|
|
|
|
#Add opencl
|
|
#IF(WIN32 AND (NOT NETFX_CORE) )
|
|
# IF(WITH_OPENCL)
|
|
# MESSAGE(STATUS "Open CL build included")
|
|
# SET(OPENCL_SOURCE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/lib/opencl-icd-1.2.11.0/icd")
|
|
# ADD_SUBDIRECTORY(${OPENCL_SOURCE_FOLDER})
|
|
# #GET_TARGET_PROPERTY(OPENCL_OUTPUT_NAME OpenCL OUTPUT_NAME)
|
|
|
|
# set(OPENCL_FOUND YES)
|
|
# set(OPENCL_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/bin/Release/opencl.lib" CACHE STRING "OpenCL library")
|
|
# set(OPENCL_INCLUDE_DIR "${OPENCL_SOURCE_FOLDER}/inc" CACHE STRING "OpenCL include directory")
|
|
# mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
|
|
|
|
# SET(ENTRYPOINT_MODULES_STRING "${ENTRYPOINT_MODULES_STRING}
|
|
# OpenclLibrary,")
|
|
# SET(ENTRYPOINT_CS_STRING "${ENTRYPOINT_CS_STRING}
|
|
# /// <summary>
|
|
# /// The file name of the OpenCL library
|
|
# /// </summary>
|
|
# public const string OpenclLibrary = \"OpenCL\";")
|
|
# ELSE()
|
|
# SET(OPENCL_OUTPUT_NAME "")
|
|
# MESSAGE(STATUS "Open CL build not included")
|
|
# ENDIF()
|
|
#ENDIF()
|
|
|
|
SET(CMAKE_OLD_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
|
SET(CMAKE_SOURCE_DIR ${OPENCV_SUBFOLDER})
|
|
IF(MSVC)
|
|
set(ENABLE_SOLUTION_FOLDERS ON CACHE BOOL "Solution folder in Visual Studio")
|
|
ENDIF()
|
|
ADD_SUBDIRECTORY(${OPENCV_SUBFOLDER})
|
|
SET(CMAKE_SOURCE_DIR ${CMAKE_OLD_SOURCE_DIR})
|
|
|
|
SET (OPENCV_MODULE_NAME_CANDIDATES
|
|
core hal imgproc video flann ml imgcodecs videoio highgui objdetect features2d calib3d
|
|
cudalegacy cudaarithm cudawarping cudafilters cudaimgproc cudaoptflow
|
|
cudastereo cudabgsegm cudafeatures2d cudacodec cudaobjdetect
|
|
photo superres
|
|
videostab shape
|
|
cudev
|
|
text face ximgproc xobjdetect xfeatures2d xphoto bgsegm optflow
|
|
stitching latentsvm line_descriptor tracking plot
|
|
dnn aruco fuzzy viz bioinspired
|
|
dpm
|
|
saliency
|
|
dnn_modern
|
|
img_hash
|
|
phase_unwrapping
|
|
)
|
|
|
|
FOREACH(OPENCV_MODULE_NAME ${OPENCV_MODULE_NAME_CANDIDATES})
|
|
IF(TARGET opencv_${OPENCV_MODULE_NAME})
|
|
LIST(APPEND OPENCV_MODULE_NAMES ${OPENCV_MODULE_NAME})
|
|
ENDIF()
|
|
ENDFOREACH()
|
|
|
|
#IF(NETFX_CORE)
|
|
# SET(EMGU_CV_WITH_TESSERACT OFF CACHE BOOL "BUILD TESSERACT OCR")
|
|
#ELSE()
|
|
SET(EMGU_CV_WITH_TESSERACT ON CACHE BOOL "BUILD TESSERACT OCR")
|
|
#ENDIF()
|
|
|
|
IF(MSVC AND WIN32 AND EMGUCV_WITH_TESSERACT)
|
|
SET(TESSERACT_OPENCL OFF CACHE BOOL "ENABLE OpenCL for TESSERACT")
|
|
ELSE()
|
|
SET(TESSERACT_OPENCL OFF CACHE BOOL "ENABLE OpenCL for TESSERACT")
|
|
ENDIF()
|
|
|
|
IF(TESSERACT_OPENCL)
|
|
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/lib/opencl-icd-1.2.11.0/icd)
|
|
ENDIF()
|
|
|
|
IF (TARGET_ARCH_64)
|
|
SET(EMGU_ENABLE_SSE OFF CACHE BOOL "ENABLE SSE for Emgu CV")
|
|
ELSE()
|
|
SET(EMGU_ENABLE_SSE ON CACHE BOOL "ENABLE SSE for Emgu CV")
|
|
ENDIF()
|
|
ADD_SUBDIRECTORY(Emgu.CV.Extern)
|
|
|
|
IF(NOT (ANDROID OR IOS OR NETFX_CORE))
|
|
ENABLE_TESTING()
|
|
ADD_SUBDIRECTORY(tests/cvextern_test)
|
|
ENDIF()
|
|
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${LIBRARY_OUTPUT_PATH}" )
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
|
|
#SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_COPY})
|
|
#SET(CPACK_PACKAGING_INSTALL_PREFIX "")
|
|
#SET(DESTDIR "")
|
|
#SET(CPACK_OUTPUT_FILE_PREFIX "")
|
|
|
|
SET(EMGU_CV_BUILD ON CACHE BOOL "BUILD Emgu CV")
|
|
SET(EMGU_CV_EXAMPLE_BUILD ON CACHE BOOL "Build Emgu CV Example")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Generate required common assembly file for Emgu CV project
|
|
# ----------------------------------------------------------------------------
|
|
INCLUDE(Today)
|
|
TODAY() #set the variable CURRENT_YEAR
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CommonAssemblyInfo.cs.in ${CMAKE_CURRENT_SOURCE_DIR}/CommonAssemblyInfo.cs)
|
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Extern/version.rc)
|
|
|
|
MACRO(CHECK_LICENSE_TYPE)
|
|
MESSAGE(STATUS " -- LICENSE FILE: ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.License.txt")
|
|
IF (WIN32)
|
|
EXECUTE_PROCESS(COMMAND "findstr" "gpl" "Emgu.CV.License.txt" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE TMP)
|
|
ELSE()
|
|
EXECUTE_PROCESS(COMMAND "grep" "gpl" "Emgu.CV.License.txt" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE TMP)
|
|
ENDIF()
|
|
|
|
STRING(STRIP "${TMP}" TMP)
|
|
STRING(LENGTH "${TMP}" GPL_LICENSE_LENGTH)
|
|
SET (LICENSE_TYPE "OpenSource")
|
|
SET (EMGUCV_LICENSE_URL "https://www.gnu.org/licenses/gpl-3.0.txt")
|
|
IF(${GPL_LICENSE_LENGTH} EQUAL 0)
|
|
SET(LICENSE_TYPE "Commercial")
|
|
SET (EMGUCV_LICENSE_URL "http://www.emgu.com/wiki/files/Emgu.CV.Commercial.License.3.0.pdf")
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "LICENSE_TYPE: ${LICENSE_TYPE}")
|
|
ENDMACRO()
|
|
CHECK_LICENSE_TYPE()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Generate neget packaging file for Emgu CV project
|
|
# ----------------------------------------------------------------------------
|
|
SET(EMGUCV_NUGET_ID "EMGU.CV")
|
|
IF(WITH_CUDA)
|
|
SET(EMGUCV_NUGET_ID "${EMGUCV_NUGET_ID}-CUDA")
|
|
ENDIF()
|
|
|
|
SET(EMGUCV_NUGET_FILE_LIST "")
|
|
IF(HAVE_WINDESKTOP_X86)
|
|
SET(EMGUCV_NUGET_FILE_LIST "${EMGUCV_NUGET_FILE_LIST} <file src=\"..\\..\\libs\\x86\\*.dll\" exclude=\"..\\..\\libs\\x86\\cu*.dll;..\\..\\libs\\x86\\npp*.dll\" target=\"build\\x86\" />")
|
|
ENDIF()
|
|
IF(HAVE_WINDESKTOP_X64)
|
|
SET(EMGUCV_NUGET_FILE_LIST "${EMGUCV_NUGET_FILE_LIST} <file src=\"..\\..\\libs\\x64\\*.dll\" exclude=\"..\\..\\libs\\x64\\cu*.dll;..\\..\\libs\\x64\\npp*.dll\" target=\"build\\x64\" />")
|
|
ENDIF()
|
|
IF(HAVE_WINDESKTOP_X86 OR HAVE_WINDESKTOP_X64)
|
|
SET(EMGUCV_NUGET_FILE_LIST "${EMGUCV_NUGET_FILE_LIST}
|
|
<file src=\"Emgu.CV.targets\" target=\"build\\${EMGUCV_NUGET_ID}.targets\" />
|
|
<file src=\"..\\..\\libs\\Emgu.CV.World.dll\" target=\"lib\\net35\" />
|
|
<file src=\"..\\..\\libs\\Emgu.CV.World.XML\" target=\"lib\\net35\" />
|
|
<file src=\"..\\..\\libs\\Emgu.CV.UI.dll\" target=\"lib\\net35\" />
|
|
<file src=\"..\\..\\libs\\Emgu.CV.UI.XML\" target=\"lib\\net35\" />")
|
|
ENDIF()
|
|
|
|
SET(EMGUCV_NUGET_TITLE_ARCH "")
|
|
IF(HAVE_WINDESKTOP_X86)
|
|
SET(EMGUCV_NUGET_TITLE_ARCH "${EMGUCV_NUGET_TITLE_ARCH} x86")
|
|
ENDIF()
|
|
IF(HAVE_WINDESKTOP_X64)
|
|
SET(EMGUCV_NUGET_TITLE_ARCH "${EMGUCV_NUGET_TITLE_ARCH} x64")
|
|
ENDIF()
|
|
STRING(STRIP "${EMGUCV_NUGET_TITLE_ARCH}" EMGUCV_NUGET_TITLE_ARCH)
|
|
STRING(REPLACE "x86 x64" "" EMGUCV_NUGET_TITLE_ARCH "${EMGUCV_NUGET_TITLE_ARCH}")
|
|
|
|
SET(EMGUCV_NUGET_TITLE "EMGU CV ${EMGUCV_NUGET_TITLE_ARCH}")
|
|
STRING(STRIP "${EMGUCV_NUGET_TITLE}" EMGUCV_NUGET_TITLE)
|
|
|
|
SET(EMGUCV_NUGET_DEPENDENCY "<dependency id=\"ZedGraph\" version=\"[5.1.7]\" />")
|
|
|
|
IF(WITH_CUDA)
|
|
SET(EMGUCV_NUGET_TITLE "${EMGUCV_NUGET_TITLE} with CUDA support")
|
|
SET(EMGU_CUDA_NUGET_ID "${EMGUCV_NUGET_ID}.DEPENDENCY")
|
|
SET(EMGU_CUDA_NUGET_TITLE "Native x64 CUDA dependency for EMGU CV")
|
|
SET(EMGU_CUDA_VERSION "${CUDA_VERSION}")
|
|
SET(EMGU_CUFFT_VERSION "${EMGU_CUDA_VERSION}")
|
|
SET(EMGU_CUDA_NUGET_FILE_LIST "<file src=\"Emgu.Cuda.targets\" target=\"build\\${EMGU_CUDA_NUGET_ID}.targets\" />")
|
|
|
|
SET(EMGUCV_NUGET_DEPENDENCY "${EMGUCV_NUGET_DEPENDENCY} <dependency id=\"${EMGU_CUDA_NUGET_ID}\" version=\"[${EMGU_CUDA_VERSION}]\" />")
|
|
SET(EMGU_CUDA_NUGET_DEPENDENCY "<dependency id=\"EMGU.CUFFT\" version=\"[${EMGU_CUFFT_VERSION}]\" />")
|
|
IF(HAVE_WINDESKTOP_X64)
|
|
file(COPY "${CUDA_TOOLKIT_ROOT_DIR}/EULA.txt" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/CUDA")
|
|
file(COPY "${CUDA_TOOLKIT_ROOT_DIR}/EULA.txt" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/Cufft")
|
|
SET(EMGU_CUDA_NUGET_FILE_LIST "${EMGU_CUDA_NUGET_FILE_LIST} <file src=\"..\\..\\..\\libs\\x64\\cu*.dll\" exclude=\"..\\..\\..\\libs\\x64\\cufft*.dll\" target=\"build\\x64\" /> <file src=\"..\\..\\..\\libs\\x64\\npp*.dll\" target=\"build\\x64\" /> <file src=\"EULA.txt\" target=\"content\\net35\\CUDA_EULA.txt\" />")
|
|
ENDIF()
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Cuda.Package.nuspec.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/CUDA/Package.nuspec)
|
|
|
|
SET(NUGET_PACKAGE_VENDOR "${CPACK_PACKAGE_VENDOR}")
|
|
STRING(REPLACE "." "" CUDA_VERSION_NUMERIC_ONLY "${CUDA_VERSION}")
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Cufft.Package.nuspec.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/Cufft/Package.nuspec)
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Emgu.Cufft.targets.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/Cufft/Emgu.Cufft.targets)
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Emgu.Cuda.targets.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/CUDA/Emgu.Cuda.targets)
|
|
ENDIF()
|
|
|
|
IF ("${LICENSE_TYPE}" EQUAL "Commercial")
|
|
SET(EMGUCV_NUGET_ID "${EMGUCV_NUGET_ID}-CR")
|
|
SET(EMGUCV_NUGET_TITLE "${EMGUCV_NUGET_TITLE} Commercial Release")
|
|
ENDIF()
|
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Package.nuspec.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/nuget/Package.nuspec)
|
|
|
|
#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/component.yaml.in ${CMAKE_CURRENT_SOURCE_DIR}/platforms/xamarin/emgucv_v3/component/component.yaml)
|
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Example.Android.AndroidManifest.xml.in ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Example/Android/Properties/AndroidManifest.xml)
|
|
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/XamarinForms.Android.AndroidManifest.xml.in ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Example/XamarinForms/Android/Properties/AndroidManifest.xml)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Generate readme file for Emgu CV project
|
|
# ----------------------------------------------------------------------------
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/README.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV/README.txt)
|
|
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV/README.txt" DESTINATION "." COMPONENT libs)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Generate CvInvokeEntryPoints.cs file for Emgu CV project
|
|
# ----------------------------------------------------------------------------
|
|
SET(OPENCV_LIBRARY_OUTPUT_NAME_PREFIX "")
|
|
IF (APPLE)
|
|
SET(OPENCV_LIBRARY_OUTPUT_NAME_POSTFIX ".${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
|
|
ELSE()
|
|
SET(OPENCV_LIBRARY_OUTPUT_NAME_POSTFIX "")
|
|
ENDIF()
|
|
|
|
|
|
SET(OPENCV_LIBRARY_OUTPUT_NAMES )
|
|
|
|
FOREACH(OPENCV_MODULE_NAME ${OPENCV_MODULE_NAME_CANDIDATES})
|
|
STRING (TOUPPER "${OPENCV_MODULE_NAME}" OPENCV_MODULE_NAME_UPPER)
|
|
|
|
STRING (SUBSTRING "${OPENCV_MODULE_NAME}" 0 1 OPENCV_MODULE_NAME_FIRST_LETTER)
|
|
STRING (TOUPPER "${OPENCV_MODULE_NAME_FIRST_LETTER}" OPENCV_MODULE_NAME_FIRST_LETTER_UPPER)
|
|
STRING (SUBSTRING "${OPENCV_MODULE_NAME}" 1 -1 OPENCV_MODULE_NAME_REMAINDER)
|
|
SET(OPENCV_MODULE_NAME_FIRST_LETTER_UPPER "${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}${OPENCV_MODULE_NAME_REMAINDER}")
|
|
|
|
SET(OPENCV_OUTPUT_PROJ_TYPE "")
|
|
IF(NOT (TARGET opencv_${OPENCV_MODULE_NAME}))
|
|
SET(OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME "")
|
|
ELSE()
|
|
#MESSAGE( STATUS "opencv_${OPENCV_MODULE_NAME} type: ${OPENCV_OUTPUT_PROJ_TYPE}")
|
|
GET_TARGET_PROPERTY(OPENCV_OUTPUT_PROJ_TYPE opencv_${OPENCV_MODULE_NAME} TYPE)
|
|
IF(NOT ("${OPENCV_OUTPUT_PROJ_TYPE}" STREQUAL "SHARED_LIBRARY"))
|
|
SET(OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME "")
|
|
ELSE()
|
|
GET_TARGET_PROPERTY(OPENCV_OUTPUT_NAME_TMP opencv_${OPENCV_MODULE_NAME} OUTPUT_NAME)
|
|
SET(OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME ${OPENCV_LIBRARY_OUTPUT_NAME_PREFIX}${OPENCV_OUTPUT_NAME_TMP}${OPENCV_LIBRARY_OUTPUT_NAME_POSTFIX})
|
|
LIST(APPEND OPENCV_LIBRARY_OUTPUT_NAMES ${OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME})
|
|
SET(ENTRYPOINT_MODULES_STRING "${ENTRYPOINT_MODULES_STRING}
|
|
Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library,")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF(IOS)
|
|
SET(ENTRYPOINT_CS_STRING "${ENTRYPOINT_CS_STRING}
|
|
/// <summary>
|
|
/// The file name of the ${OPENCV_MODULE_NAME} library
|
|
/// </summary>
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"__Internal\";")
|
|
ELSEIF(((WIN32 AND NOT ANDROID) OR APPLE))
|
|
IF(("${OPENCV_OUTPUT_PROJ_TYPE}" STREQUAL "SHARED_LIBRARY"))
|
|
SET(ANDROID_ENTRYPOINT "opencv_${OPENCV_MODULE_NAME}")
|
|
SET(OSX_ENTRYPOINT "opencv_${OPENCV_MODULE_NAME}.${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
|
|
SET(OSX_UNITY_STANDALONE_ENTRYPOINT "@executable_path/../Plugins/emgucv.bundle/Contents/MacOS/lib${OSX_ENTRYPOINT}.dylib")
|
|
SET(OSX_UNITY_EDITOR_ENTRYPOINT "Assets/Plugins/emgucv.bundle/Contents/MacOS/lib${OSX_ENTRYPOINT}.dylib")
|
|
SET(WINDOWS_ENTRYPOINT "opencv_${OPENCV_MODULE_NAME}${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
|
|
SET(IOS_ENTRYPOINT "__Internal")
|
|
|
|
IF("${OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME}" STREQUAL "")
|
|
SET(ANDROID_ENTRYPOINT "")
|
|
SET(OSX_ENTRYPOINT "")
|
|
SET(OSX_UNITY_ENTRYPOINT "emgucv")
|
|
SET(WINDOWS_ENTRYPOINT "")
|
|
SET(IOS_ENTRYPOINT "")
|
|
ENDIF()
|
|
|
|
SET(ENTRYPOINT_CS_STRING "${ENTRYPOINT_CS_STRING}
|
|
/// <summary>
|
|
/// The file name of the ${OPENCV_MODULE_NAME} library
|
|
/// </summary>
|
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${WINDOWS_ENTRYPOINT}\";
|
|
#elif UNITY_EDITOR_OSX
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${OSX_UNITY_EDITOR_ENTRYPOINT}\";
|
|
#elif UNITY_STANDALONE_OSX
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${OSX_UNITY_STANDALONE_ENTRYPOINT}\";
|
|
#elif __IOS__ || UNITY_IPHONE
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${IOS_ENTRYPOINT}\";
|
|
#elif __ANDROID__ || UNITY_ANDROID
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${ANDROID_ENTRYPOINT}\";
|
|
#else
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME}\";
|
|
#endif
|
|
")
|
|
ENDIF()
|
|
ELSE()
|
|
IF("${OPENCV_OUTPUT_PROJ_TYPE}" STREQUAL "SHARED_LIBRARY")
|
|
SET(ENTRYPOINT_CS_STRING "${ENTRYPOINT_CS_STRING}
|
|
/// <summary>
|
|
/// The file name of the ${OPENCV_MODULE_NAME} library
|
|
/// </summary>
|
|
public const string Opencv${OPENCV_MODULE_NAME_FIRST_LETTER_UPPER}Library = \"${OPENCV_${OPENCV_MODULE_NAME_UPPER}_OUTPUT_NAME}\";")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
ENDFOREACH()
|
|
|
|
SET(ENTRYPOINT_MODULES_STRING "public static List<String> OpenCVModuleList = new List<String>
|
|
{
|
|
#if !(__ANDROID__ || __IOS__ || UNITY_IPHONE || UNITY_ANDROID || NETFX_CORE)
|
|
OpencvFFMpegLibrary,
|
|
#endif
|
|
${ENTRYPOINT_MODULES_STRING}
|
|
ExternLibrary
|
|
};
|
|
")
|
|
|
|
GET_TARGET_PROPERTY(CVEXTERN_OUTPUT_NAME cvextern OUTPUT_NAME)
|
|
LIST(APPEND OPENCV_LIBRARY_OUTPUT_NAMES ${CVEXTERN_OUTPUT_NAME})
|
|
|
|
if(WIN32 AND WITH_FFMPEG)
|
|
if(TARGET_ARCH_64)
|
|
set(FFMPEG_SUFFIX _64)
|
|
endif()
|
|
#STRING(LENGTH "${OPENCV_CORE_OUTPUT_NAME}" temp)
|
|
#MATH(EXPR temp "${temp}-3")
|
|
#STRING(SUBSTRING ${OPENCV_CORE_OUTPUT_NAME} ${temp} -1 OPENCV_DLLVERSION)
|
|
set(OPENCV_FFMPEG_OUTPUT_NAME "opencv_ffmpeg${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}${FFMPEG_SUFFIX}")
|
|
#set(OPENCV_FFMPEG_OUTPUT_NAME "opencv_ffmpeg${FFMPEG_SUFFIX}")
|
|
MESSAGE(STATUS "OPENCV_FFMPEG_OUTPUT_NAME: ${OPENCV_FFMPEG_OUTPUT_NAME}")
|
|
LIST(APPEND OPENCV_LIBRARY_OUTPUT_NAMES ${OPENCV_FFMPEG_OUTPUT_NAME})
|
|
endif()
|
|
|
|
IF(TARGET_ARCH_64)
|
|
SET(UNMANAGED_CODE_BITNESS "64")
|
|
ELSE()
|
|
SET(UNMANAGED_CODE_BITNESS "32")
|
|
ENDIF()
|
|
|
|
#IF(ANDROID)
|
|
# SET(CVINVOKE_ENTRYPOINTS_FILE_SUBFOLDER "Android/")
|
|
#ELSE()
|
|
SET(CVINVOKE_ENTRYPOINTS_FILE_SUBFOLDER "")
|
|
#ENDIF()
|
|
|
|
IF(IOS)
|
|
SET(CVEXTERN_OUTPUT_NAME "__Internal")
|
|
ENDIF()
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CvInvokeEntryPoints.cs.in ${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV/PInvoke/${CVINVOKE_ENTRYPOINTS_FILE_SUBFOLDER}CvInvokeEntryPoints.cs)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Build the managed dlls of Emgu CV
|
|
# ----------------------------------------------------------------------------
|
|
IF(NOT IOS)
|
|
ADD_SUBDIRECTORY(Emgu.Util)
|
|
ADD_SUBDIRECTORY(Emgu.CV)
|
|
ADD_SUBDIRECTORY(Emgu.CV.UI)
|
|
ADD_SUBDIRECTORY(Emgu.CV.Example)
|
|
ADD_SUBDIRECTORY(Emgu.UI)
|
|
ADD_SUBDIRECTORY(Emgu.CV.Test)
|
|
ADD_SUBDIRECTORY(Emgu.CV.Cuda)
|
|
IF (EMGU_CV_WITH_TESSERACT)
|
|
ADD_SUBDIRECTORY(Emgu.CV.OCR)
|
|
ENDIF()
|
|
|
|
ADD_SUBDIRECTORY(Emgu.CV.Contrib)
|
|
IF(NOT (NETFX_CORE OR ANDROID))
|
|
ADD_SUBDIRECTORY(Emgu.CV.UI.GL)
|
|
ENDIF()
|
|
ADD_SUBDIRECTORY(Emgu.CV.World)
|
|
ENDIF()
|
|
|
|
IF(WIN32)
|
|
ADD_SUBDIRECTORY(platforms/nuget)
|
|
ENDIF()
|
|
|
|
IF(HAVE_ANDROID)
|
|
INSTALL(
|
|
FILES
|
|
"Solution/Android/Emgu.CV.Android.Example.sln"
|
|
"Solution/Android/Emgu.CV.Android.sln"
|
|
DESTINATION "Solution/Android"
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
INSTALL(
|
|
FILES
|
|
"opencv/LICENSE"
|
|
DESTINATION "opencv"
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
ENDIF()
|
|
|
|
IF(HAVE_IOS)
|
|
INSTALL(
|
|
FILES
|
|
"Solution/iOS/Emgu.CV.iOS.Example.sln"
|
|
"Solution/iOS/Emgu.CV.iOS.sln"
|
|
DESTINATION "Solution/iOS"
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
ENDIF()
|
|
|
|
IF(HAVE_OSX)
|
|
INSTALL(
|
|
FILES
|
|
"Solution/Mac/Emgu.CV.Mac.Example.sln"
|
|
DESTINATION "Solution/Mac"
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
IF (NOT IS_OSX_BUILD)
|
|
INSTALL(
|
|
FILES
|
|
"libs/osx/libcvextern.dylib"
|
|
DESTINATION "libs/osx"
|
|
COMPONENT emgucv_binary
|
|
)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
INSTALL(
|
|
FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.snk"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/CommonAssemblyInfo.cs"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${LICENSE_FILE_NAME}"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/nuget.config"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/components.config"
|
|
DESTINATION .
|
|
COMPONENT emgucv_source
|
|
)
|
|
|
|
IF (ANDROID)
|
|
SET(CPACK_GENERATOR ZIP)
|
|
ELSEIF (WIN32)
|
|
IF(NETFX_CORE)
|
|
SET(CPACK_GENERATOR ZIP)
|
|
ELSE()
|
|
#SET(CPACK_GENERATOR ZIP)
|
|
SET(CPACK_GENERATOR NSIS;ZIP)
|
|
ENDIF()
|
|
|
|
SET(CPACK_ARCHIVE_COMPONENT_INSTALL ON) #enable components install for zip
|
|
IF(CPACK_GENERATOR MATCHES "ZIP")
|
|
SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
|
|
ENDIF()
|
|
SET(CPACK_NSIS_MODIFY_PATH OFF)
|
|
SET(CPACK_NSIS_INSTALL_ROOT "C:\\\\Emgu")
|
|
|
|
IF(NOT NETFX_CORE)
|
|
ADD_SUBDIRECTORY(Emgu.CV.DebuggerVisualizers)
|
|
ENDIF()
|
|
|
|
IF(NOT NETFX_CORE)
|
|
|
|
if(WITH_FFMPEG)
|
|
|
|
INSTALL(
|
|
FILES
|
|
"${UNMANAGED_LIBRARY_OUTPUT_PATH}/${OPENCV_FFMPEG_OUTPUT_NAME}.dll"
|
|
DESTINATION "libs/${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER}/"
|
|
COMPONENT libs
|
|
)
|
|
endif()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Install Debugger Visualizer
|
|
# ----------------------------------------------------------------------------
|
|
|
|
SET (HAS_WINDESKTOP_X86_NATIVE_BINARY OFF)
|
|
IF (IS_WINDESKTOP_X86_BUILD)
|
|
FOREACH(tmp_component ${OPENCV_LIBRARY_OUTPUT_NAMES})
|
|
LIST(APPEND UNMANAGED_DLL_32BIT "${UNMANAGED_LIBRARY_OUTPUT_PATH}/${tmp_component}.dll")
|
|
ENDFOREACH()
|
|
FOREACH(tmp_component ${CVEXTERN_DEPENDENCY_DLL_NAMES})
|
|
LIST(APPEND UNMANAGED_DLL_32BIT "${UNMANAGED_LIBRARY_OUTPUT_PATH}/${tmp_component}.dll")
|
|
ENDFOREACH()
|
|
SET (HAS_WINDESKTOP_X86_NATIVE_BINARY ON)
|
|
|
|
IF (${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER} MATCHES "^$")
|
|
SET(DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER "")
|
|
ELSE()
|
|
#MESSAGE(STATUS "UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER: ${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER}")
|
|
#remove leading slashes
|
|
STRING(REGEX REPLACE "^/" "" DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER ${UNMANAGED_LIBRARY_OUTPUT_SUBFOLDER})
|
|
#add tailing slashes
|
|
SET(DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER "${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}\\")
|
|
#replace single slashes with quard slashes
|
|
STRING(REGEX REPLACE "\\\\" "\\\\\\\\" DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER ${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER})
|
|
#MESSAGE(STATUS "DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER: ${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}")
|
|
ENDIF()
|
|
|
|
ELSE()
|
|
|
|
FILE(GLOB UNMANAGED_DLL_32BIT "${CMAKE_CURRENT_SOURCE_DIR}/libs/x86/*.dll")
|
|
LIST(LENGTH UNMANAGED_DLL_32BIT UNMANAGED_DLL_32BIT_LENGTH)
|
|
IF(UNMANAGED_DLL_32BIT_LENGTH GREATER 0)
|
|
SET (HAS_WINDESKTOP_X86_NATIVE_BINARY ON)
|
|
SET(DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER "x86\\\\\\\\")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "HAS_WINDESKTOP_X86_NATIVE_BINARY: ${HAS_WINDESKTOP_X86_NATIVE_BINARY}")
|
|
#FOREACH (file ${UNMANAGED_DLL_32BIT})
|
|
# MESSAGE(STATUS "WILL DEPLOY ${file} with DEBUGGER VISUALIZER")
|
|
#ENDFOREACH()
|
|
IF (HAS_WINDESKTOP_X86_NATIVE_BINARY)
|
|
SET(DEBUGER_VISUALIZER_FILES
|
|
"Emgu.CV.World"
|
|
"Emgu.CV.UI"
|
|
"ZedGraph")
|
|
#SET(DEBUGGER_VISUALIZER_UNMANAGED_FILES
|
|
# "Emgu.CV.DebuggerVisualizers"
|
|
#${OPENCV_LIBRARY_OUTPUT_NAMES}
|
|
#${CVEXTERN_DEPENDENCY_DLL_NAMES})
|
|
|
|
SET(DEBUGGER_VISUALIZER_UNMANAGED_FILES)
|
|
FOREACH(full_file_name ${UNMANAGED_DLL_32BIT})
|
|
get_filename_component(just_the_file_name "${full_file_name}" NAME_WE)
|
|
LIST(APPEND DEBUGGER_VISUALIZER_UNMANAGED_FILES "${just_the_file_name}")
|
|
ENDFOREACH()
|
|
|
|
#MESSAGE(STATUS "########### UNMANAGED_DLL_32BIT: ${UNMANAGED_DLL_32BIT}")
|
|
#MESSAGE(STATUS "########### DEBUGGER_VISUALIZER_UNMANAGED_FILES: ${DEBUGGER_VISUALIZER_UNMANAGED_FILES}")
|
|
|
|
|
|
|
|
#MESSAGE(STATUS "########### DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER: ${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}")
|
|
|
|
#FOREACH(UNMANAGE_DLL_NAME ${CVEXTERN_DEPENDENCY_DLL_NAMES})
|
|
# LIST(APPEND DEBUGGER_VISUALIZER_FILES "${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}${UNMANAGE_DLL_NAME}")
|
|
#ENDFOREACH()
|
|
#MESSAGE(STATUS "DEBUGGER VISUALIZER FILES: ${DEBUGER_VISUALIZER_FILES}")
|
|
|
|
MACRO(INSTALL_DEBUGER_VISUALIZER vs_version vs_description hklm_key)
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND "installDebuggerVisualizer4${vs_version}:
|
|
ClearErrors
|
|
Var /GLOBAL ${vs_version}_INSTALL_FOLDER ")
|
|
|
|
IF("${vs_version}" STREQUAL "VS2017")
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
ReadRegStr \\\$R1 HKLM '${hklm_key}' '15.0'
|
|
StrCpy $${vs_version}_INSTALL_FOLDER '\\\$R1Common7\\\\Packages\\\\Debugger\\\\Visualizers\\\\'")
|
|
ELSE()
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
ReadRegStr \\\$R1 HKLM '${hklm_key}' 'InstallDir'
|
|
StrCpy $${vs_version}_INSTALL_FOLDER '\\\$R1..\\\\Packages\\\\Debugger\\\\Visualizers\\\\'")
|
|
ENDIF()
|
|
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
IfErrors installDebuggerVisualizer4${vs_version}Done
|
|
MessageBox MB_YESNO 'Install Debugger Visualizer for ${vs_description}?' IDNO installDebuggerVisualizer4${vs_version}Done")
|
|
|
|
#Install Emgu CV managed DLLs
|
|
FOREACH (file ${DEBUGER_VISUALIZER_FILES})
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
CopyFiles /SILENT '\\\$INSTDIR\\\\bin\\\\${file}.dll' '$${vs_version}_INSTALL_FOLDER'")
|
|
ENDFOREACH()
|
|
|
|
#INSTALL native DLLs
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
CreateDirectory '$${vs_version}_INSTALL_FOLDER${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}'")
|
|
FOREACH (file ${DEBUGGER_VISUALIZER_UNMANAGED_FILES})
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
CopyFiles /SILENT '\\\$INSTDIR\\\\libs\\\\${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}${file}.dll' '$${vs_version}_INSTALL_FOLDER${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}'")
|
|
ENDFOREACH()
|
|
|
|
#IF(DEFINED UNIVERSAL_BUILD)
|
|
#SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
# "${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
#CreateDirectory '$${vs_version}_INSTALL_FOLDERx86\\\\'")
|
|
#FOREACH (file ${UNMANAGED_DLL_32BIT})
|
|
# GET_FILENAME_COMPONENT(UNMANAGED_FILE_NAME_TO_DEPLOY ${file} NAME)
|
|
# MESSAGE(STATUS "Adding ${UNMANAGED_FILE_NAME_TO_DEPLOY} to debuger visualizer for ${vs_description}")
|
|
# SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
# "${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
#CopyFiles /SILENT '\\\$INSTDIR\\\\libs\\\\x86\\\\${UNMANAGED_FILE_NAME_TO_DEPLOY}' '$${vs_version}_INSTALL_FOLDERx86\\\\'")
|
|
#ENDFOREACH()
|
|
#ENDIF()
|
|
|
|
#Install the Debugger Visualizer itself
|
|
SET(INSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${INSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
CopyFiles /SILENT '\\\$INSTDIR\\\\bin\\\\Emgu.CV.DebuggerVisualizers.${vs_version}.dll' '$${vs_version}_INSTALL_FOLDER'
|
|
installDebuggerVisualizer4${vs_version}Done:")
|
|
|
|
ENDMACRO()
|
|
|
|
MACRO(UNINSTALL_DEBUGER_VISUALIZER vs_version hklm_key)
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND "uninstallDebuggerVisualizer4${vs_version}:
|
|
ClearErrors")
|
|
|
|
IF("${vs_version}" STREQUAL "VS2017")
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
ReadRegStr \\\$R1 HKLM '${hklm_key}' '15.0'
|
|
StrCpy $${vs_version}_INSTALL_FOLDER '\\\$R1Common7\\\\Packages\\\\Debugger\\\\Visualizers\\\\'")
|
|
ELSE()
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
ReadRegStr \\\$R1 HKLM '${hklm_key}' 'InstallDir'
|
|
StrCpy $${vs_version}_INSTALL_FOLDER '\\\$R1..\\\\Packages\\\\Debugger\\\\Visualizers\\\\'")
|
|
ENDIF()
|
|
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
IfErrors uninstallDebuggerVisualizer4${vs_version}Done")
|
|
FOREACH (file ${DEBUGER_VISUALIZER_FILES})
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
Delete '$${vs_version}_INSTALL_FOLDER${file}.dll'")
|
|
ENDFOREACH()
|
|
|
|
FOREACH (file ${DEBUGGER_VISUALIZER_UNMANAGED_FILES})
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
Delete '$${vs_version}_INSTALL_FOLDER${DEBUGGER_VISUALIZER_UNMANAGED_FILES_SUBFOLDER}${file}.dll'")
|
|
ENDFOREACH()
|
|
|
|
#IF(DEFINED UNIVERSAL_BUILD)
|
|
#FOREACH (file ${UNMANAGED_DLL_32BIT})
|
|
# GET_FILENAME_COMPONENT(UNMANAGED_FILE_NAME_TO_DEPLOY ${file} NAME)
|
|
# SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
# "${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
#Delete '$${vs_version}_INSTALL_FOLDERx86\\\\${UNMANAGED_FILE_NAME_TO_DEPLOY}'")
|
|
#ENDFOREACH()
|
|
#ENDIF()
|
|
|
|
|
|
SET(UNINSTALL_DEBUGER_VISUALIZER_COMMAND
|
|
"${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}
|
|
Delete '$${vs_version}_INSTALL_FOLDEREmgu.CV.DebuggerVisualizers.${vs_version}.dll'
|
|
uninstallDebuggerVisualizer4${vs_version}Done:
|
|
")
|
|
ENDMACRO()
|
|
|
|
#INSTALL_DEBUGER_VISUALIZER("VS2008" "Visual Studio 2008" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\9.0")
|
|
#SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
#INSTALL_DEBUGER_VISUALIZER("VS2010" "Visual Studio 2010" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\10.0")
|
|
#SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
INSTALL_DEBUGER_VISUALIZER("VS2012" "Visual Studio 2012" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\11.0")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
INSTALL_DEBUGER_VISUALIZER("VS2013" "Visual Studio 2013" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\12.0")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
INSTALL_DEBUGER_VISUALIZER("VS2015" "Visual Studio 2015" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\14.0")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
INSTALL_DEBUGER_VISUALIZER("VS2017" "Visual Studio 2017" "SOFTWARE\\\\\\\\WOW6432NODE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\SxS\\\\\\\\VS7")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\n${INSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
#UNINSTALL_DEBUGER_VISUALIZER("VS2008" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\9.0")
|
|
#SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
#UNINSTALL_DEBUGER_VISUALIZER("VS2010" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\10.0")
|
|
#SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
UNINSTALL_DEBUGER_VISUALIZER("VS2012" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\11.0")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
UNINSTALL_DEBUGER_VISUALIZER("VS2013" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\12.0")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
UNINSTALL_DEBUGER_VISUALIZER("VS2015" "SOFTWARE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\14.0")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
|
|
UNINSTALL_DEBUGER_VISUALIZER("VS2017" "SOFTWARE\\\\\\\\WOW6432NODE\\\\\\\\Microsoft\\\\\\\\VisualStudio\\\\\\\\SxS\\\\\\\\VS7")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n${UNINSTALL_DEBUGER_VISUALIZER_COMMAND}")
|
|
ELSE()
|
|
MESSAGE(STATUS "x86 binary not found, will not deploy debugger visualizer")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Build the documents of Emgu CV
|
|
# ----------------------------------------------------------------------------
|
|
SET(EMGU_CV_DOCUMENTATION_BUILD OFF CACHE BOOL "Build Emgu CV Documentation")
|
|
IF(EMGU_CV_DOCUMENTATION_BUILD)
|
|
ADD_SUBDIRECTORY(miscellaneous)
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Set if we should sign the managed assembly
|
|
# ----------------------------------------------------------------------------
|
|
IF (WIN32)
|
|
SET(EMGU_SIGN_ASSEMBLY OFF CACHE BOOL "If enabled, we will sign the managed assembly")
|
|
ELSE()
|
|
SET(EMGU_SIGN_ASSEMBLY ON CACHE BOOL "If enabled, we will sign the managed assembly")
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Build the extra components of Emgu CV
|
|
# ----------------------------------------------------------------------------
|
|
SET(EMGU_CV_EXTRA_BUILD OFF CACHE BOOL "Build Emgu CV Extra")
|
|
IF(EMGU_CV_EXTRA_BUILD)
|
|
ADD_SUBDIRECTORY(Emgu.RPC)
|
|
ENDIF()
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# The source files
|
|
# ----------------------------------------------------------------------------
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib
|
|
DESTINATION .
|
|
COMPONENT emgucv_source
|
|
FILES_MATCHING
|
|
PATTERN "*.dll"
|
|
PATTERN "*.txt"
|
|
PATTERN "*.xml"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "obj" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
PATTERN "Release" EXCLUDE
|
|
PATTERN "${PROJECT_NAME}.dir" EXCLUDE
|
|
)
|
|
|
|
#WINDOWS PHONE81 solution files
|
|
IF(HAVE_WINPHONE_81_X86 OR HAVE_WINPHONE_81_ARM)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Solution
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "Emgu.CV.Example.Windows.Phone.sln"
|
|
PATTERN "Windows.Phone/packages/repositories.config"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "bin" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Windows.Store" EXCLUDE
|
|
PATTERN "Windows.Desktop" EXCLUDE
|
|
PATTERN "CrossPlatform" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
)
|
|
ENDIF()
|
|
|
|
#WINDOWS STORE 81 solution files
|
|
IF(HAVE_WINSTORE_81_X86 OR HAVE_WINSTORE_81_X64)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Solution
|
|
DESTINATION .
|
|
COMPONENT emgucv_source
|
|
FILES_MATCHING
|
|
PATTERN "Emgu.CV.Windows.Store.sln"
|
|
PATTERN "Windows.Store/packages/repositories.config"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "bin" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Windows.Phone" EXCLUDE
|
|
PATTERN "Windows.Desktop" EXCLUDE
|
|
PATTERN "CrossPlatform" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
)
|
|
ENDIF()
|
|
|
|
#WINDOWS STORE EXAMPLE
|
|
IF(HAVE_WINSTORE_81_X86 OR HAVE_WINSTORE_81_X64 OR HAVE_WINSTORE_10_X86 OR HAVE_WINSTORE_10_X64 OR HAVE_WINSTORE_10_ARM)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Solution
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "Emgu.CV.Example.Windows.Store.sln"
|
|
PATTERN "Windows.Store/packages/repositories.config"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "bin" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Windows.Phone" EXCLUDE
|
|
PATTERN "Windows.Desktop" EXCLUDE
|
|
PATTERN "CrossPlatform" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
)
|
|
ENDIF()
|
|
|
|
#WIN32 and not NETFX_CORE solution files
|
|
IF (HAVE_WINDESKTOP_X86 OR HAVE_WINDESKTOP_X64)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Solution
|
|
DESTINATION .
|
|
COMPONENT emgucv_source
|
|
FILES_MATCHING
|
|
PATTERN "Emgu.CV.sln"
|
|
PATTERN "Emgu.CV.DebuggerVisualizers.sln"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "bin" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Windows.Phone" EXCLUDE
|
|
PATTERN "Windows.Store" EXCLUDE
|
|
PATTERN "CrossPlatform" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.WPF
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "*.cs"
|
|
PATTERN ".git" EXCLUDE
|
|
)
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Solution
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "Emgu.CV.Example.sln"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "bin" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Windows.Phone" EXCLUDE
|
|
PATTERN "Windows.Store" EXCLUDE
|
|
PATTERN "CrossPlatform" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# The example files
|
|
# ----------------------------------------------------------------------------
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Example
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "*.cs"
|
|
PATTERN "*.csproj"
|
|
PATTERN "*.resx"
|
|
PATTERN "*.h"
|
|
PATTERN "*.cpp"
|
|
PATTERN "*.resX"
|
|
PATTERN "*.ico"
|
|
PATTERN "*.rc"
|
|
PATTERN "CPlusPlus/*.vcproj"
|
|
PATTERN "CPlusPlus/*.vcxproj"
|
|
PATTERN "*.vb"
|
|
PATTERN "*.vbproj"
|
|
PATTERN "*.aspx"
|
|
PATTERN "*.dll"
|
|
PATTERN "*.txt"
|
|
PATTERN "*.xml"
|
|
PATTERN "*.xaml"
|
|
PATTERN "*.jpg"
|
|
PATTERN "*.png"
|
|
PATTERN "*.settings"
|
|
PATTERN "*.config"
|
|
PATTERN "tessdata/*"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "obj" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
PATTERN "Release" EXCLUDE
|
|
PATTERN "Debug" EXCLUDE
|
|
PATTERN "RelWithDebInfo" EXCLUDE
|
|
PATTERN "*.dir" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
PATTERN "Mac" EXCLUDE
|
|
PATTERN "WindowsStore" EXCLUDE
|
|
PATTERN "WindowsPhoneApp" EXCLUDE
|
|
PATTERN "WindowsStoreCameraApp" EXCLUDE
|
|
)
|
|
ENDIF()
|
|
|
|
INSTALL(
|
|
FILES
|
|
"${OPENCV_SUBFOLDER}/data/haarcascades/haarcascade_frontalface_default.xml"
|
|
"${OPENCV_SUBFOLDER}/data/haarcascades/haarcascade_eye.xml"
|
|
DESTINATION opencv/data/haarcascades
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
INSTALL(
|
|
FILES
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifierNM1.xml"
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifierNM2.xml"
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifier_erGrouping.xml"
|
|
DESTINATION opencv_contrib/modules/text/samples/
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Build the package
|
|
# ----------------------------------------------------------------------------
|
|
|
|
set(CPACK_COMPONENTS_ALL
|
|
libs #opencv components
|
|
emgucv_binary
|
|
emgucv_source
|
|
emgucv_example_source
|
|
)
|
|
|
|
set(CPACK_PACKAGE_EXECUTABLES "" "") #http://public.kitware.com/Bug/view.php?id=7828
|
|
|
|
SET(CPACK_NSIS_CONTACT "support@emgu.com")
|
|
|
|
# Define MUI_TEMP that will be used for uninstalling menulinks
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Add menu link for documentations
|
|
# ----------------------------------------------------------------------------
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation\\\" ")
|
|
|
|
#SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation\\\\Open CV Documentation.lnk\\\" \\\"$INSTDIR\\\\doc\\\\opencv2refman.pdf\\\" ")
|
|
#SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation\\\\Open CV Documentation.lnk\\\" ")
|
|
|
|
IF(EMGU_CV_DOCUMENTATION_BUILD)
|
|
LIST(APPEND CPACK_COMPONENTS_ALL emgucv_document)
|
|
set(CPACK_COMPONENT_EMGUCV_DOCUMENT_DISPLAY_NAME "Emgu CV Documentation")
|
|
set(CPACK_COMPONENT_EMGUCV_DOCUMENT_DEPENDS emgucv_binary)
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Documentation\\\\Emgu CV Documentation.lnk\\\" \\\"$INSTDIR\\\\Emgu.CV.Documentation.chm\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation\\\\Emgu CV Documentation.lnk\\\" ")
|
|
ENDIF()
|
|
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\nRMDir \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Documentation\\\" ")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Add menu link for web sites
|
|
# ----------------------------------------------------------------------------
|
|
LIST(APPEND CPACK_NSIS_MENU_LINKS "http://www.emgu.com" "Emgu CV wiki")
|
|
LIST(APPEND CPACK_NSIS_MENU_LINKS "http://www.emgu.com/forum" "Emgu CV Discussion Forums")
|
|
LIST(APPEND CPACK_NSIS_MENU_LINKS "https://github.com/emgucv/emgucv/issues" "Emgu CV Bug Tracking")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Add menu link for Visual Studio solutions
|
|
# ----------------------------------------------------------------------------
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Visual Studio Solution\\\" ")
|
|
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Visual Studio Solution\\\\Visual Studio 2013 - 2017 Examples.lnk\\\" \\\"$INSTDIR\\\\Solution\\\\Windows.Desktop\\\\Emgu.CV.Example.sln\\\" ")
|
|
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Visual Studio Solution\\\\Visual Studio 2013 - 2017 Examples.lnk\\\" ")
|
|
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\nRMDir \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Visual Studio Solution\\\" ")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Add menu link for Licenses
|
|
# ----------------------------------------------------------------------------
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\" ")
|
|
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\\Emgu CV License.lnk\\\" \\\"$INSTDIR\\\\${LICENSE_FILE_NAME}\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\\Open CV License.lnk\\\" \\\"$INSTDIR\\\\lib\\\\opencv.license.txt\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\\ZedGraph License.lnk\\\" \\\"$INSTDIR\\\\lib\\\\3rdParty\\\\ZedGraph.license.txt\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\\Tesseract OCR License.lnk\\\" \\\"$INSTDIR\\\\lib\\\\3rdParty\\\\tesseract-ocr.license.txt\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}\nCreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\License\\\\CvBlob License.lnk\\\" \\\"$INSTDIR\\\\lib\\\\3rdParty\\\\cvblob.license.txt\\\" ")
|
|
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\\Emgu CV License.lnk\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\\Open CV License.lnk\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\\ZedGraph License.lnk\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\\Tesseract OCR License.lnk\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\n Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\\CvBlob License.lnk\\\" ")
|
|
SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\nRMDir \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\License\\\" ")
|
|
|
|
#IF(EMGU_CV_EXAMPLE_BUILD AND NOT NETFX_CORE)
|
|
# LIST(APPEND CPACK_COMPONENTS_ALL emgucv_example_binary)
|
|
# SET(CPACK_COMPONENT_EMGUCV_EXAMPLE_BINARY_DISPLAY_NAME "Emgu CV Examples (Binary)")
|
|
# SET(CPACK_COMPONENT_EMGUCV_EXAMPLE_BINARY_DEPENDS emgucv_binary)
|
|
#ENDIF()
|
|
|
|
set(CPACK_COMPONENT_MAIN_DISPLAY_NAME "OpenCV Native Binary")
|
|
set(CPACK_COMPONENT_MAIN_REQUIRED ON)
|
|
set(CPACK_COMPONENT_EMGUCV_BINARY_DISPLAY_NAME "Emgu CV (Binary)")
|
|
set(CPACK_COMPONENT_EMGUCV_BINARY_REQUIRED ON)
|
|
set(CPACK_COMPONENT_EMGUCV_BINARY_DEPENDS libs)
|
|
set(CPACK_COMPONENT_EMGUCV_SOURCE_DISPLAY_NAME "Emgu CV (Source)")
|
|
set(CPACK_COMPONENT_EMGUCV_SOURCE_DEPENDS libs)
|
|
set(CPACK_COMPONENT_EMGUCV_EXAMPLE_SOURCE_DISPLAY_NAME "Emgu CV Examples (Source)")
|
|
set(CPACK_COMPONENT_EMGUCV_EXAMPLE_SOURCE_DEPENDS emgucv_source)
|
|
|
|
ELSEIF (APPLE)
|
|
|
|
SET(CPACK_GENERATOR ZIP)
|
|
SET(CPACK_BUNDLE_NAME ${CPACK_PACKAGE_NAME})
|
|
|
|
SET(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/platforms/osx/icons.icns")
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# The source files
|
|
# ----------------------------------------------------------------------------
|
|
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib
|
|
DESTINATION .
|
|
COMPONENT emgucv_source
|
|
FILES_MATCHING
|
|
PATTERN "*.dll"
|
|
PATTERN "*.txt"
|
|
PATTERN "*.xml"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "obj" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
PATTERN "Release" EXCLUDE
|
|
PATTERN "${PROJECT_NAME}.dir" EXCLUDE
|
|
)
|
|
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# The example files
|
|
# ----------------------------------------------------------------------------
|
|
INSTALL(
|
|
DIRECTORY
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Emgu.CV.Example
|
|
DESTINATION .
|
|
COMPONENT emgucv_example_source
|
|
FILES_MATCHING
|
|
PATTERN "*.cs"
|
|
PATTERN "*.csproj"
|
|
PATTERN "*.resx"
|
|
PATTERN "*.h"
|
|
PATTERN "*.cpp"
|
|
PATTERN "*.resX"
|
|
PATTERN "*.ico"
|
|
PATTERN "*.rc"
|
|
PATTERN "CPlusPlus/*.vcproj"
|
|
PATTERN "CPlusPlus/*.vcxproj"
|
|
PATTERN "*.vb"
|
|
PATTERN "*.vbproj"
|
|
PATTERN "*.aspx"
|
|
PATTERN "*.dll"
|
|
PATTERN "*.txt"
|
|
PATTERN "*.xml"
|
|
PATTERN "*.xaml"
|
|
PATTERN "*.jpg"
|
|
PATTERN "*.png"
|
|
PATTERN "*.settings"
|
|
PATTERN "*.config"
|
|
PATTERN "tessdata/*"
|
|
PATTERN ".git" EXCLUDE
|
|
PATTERN "obj" EXCLUDE
|
|
PATTERN "CMake*" EXCLUDE
|
|
PATTERN "Release" EXCLUDE
|
|
PATTERN "Debug" EXCLUDE
|
|
PATTERN "*.dir" EXCLUDE
|
|
PATTERN "Android" EXCLUDE
|
|
PATTERN "iOS" EXCLUDE
|
|
)
|
|
|
|
INSTALL(
|
|
FILES
|
|
"${OPENCV_SUBFOLDER}/data/haarcascades/haarcascade_frontalface_default.xml"
|
|
"${OPENCV_SUBFOLDER}/data/haarcascades/haarcascade_eye.xml"
|
|
DESTINATION opencv/data/haarcascades
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
|
|
INSTALL(
|
|
FILES
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifierNM1.xml"
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifierNM2.xml"
|
|
"${OPENCV_CONTRIB_SUBFOLDER}/modules/text/samples/trained_classifier_erGrouping.xml"
|
|
DESTINATION opencv_contrib/modules/text/samples/
|
|
COMPONENT emgucv_example_source
|
|
)
|
|
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Generate required common assembly file for Emgu CV project
|
|
# ----------------------------------------------------------------------------
|
|
SET(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/CMake/osx/Info.plist)
|
|
FILE(WRITE ${CPACK_BUNDLE_PLIST}
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
|
|
<plist version=\"1.0\">
|
|
<dict>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.emgu.emgucv</string>
|
|
<key>CFBundleName</key>
|
|
<string>${CPACK_BUNDLE_NAME}</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1</string>
|
|
<key>LSMinimumSystemVersion</key>
|
|
<string>10.6</string>
|
|
</dict>
|
|
</plist>")
|
|
|
|
ELSE() #LINUX
|
|
SET(MONO_GACUTIL_EXEC "gacutil")
|
|
SET(LINUX_CONTROL_FILE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux")
|
|
SET(EMGUCV_MANAGED_DLLS "Emgu.CV.World" "Emgu.CV.UI" "ZedGraph")
|
|
|
|
SET(CLIFILELIST_CONTENT "")
|
|
FOREACH(MANAGED_DLL ${EMGUCV_MANAGED_DLLS})
|
|
SET(CLIFILELIST_CONTENT "${CLIFILELIST_CONTENT}/usr/${CPACK_PACKAGE_CLI_FOLDER}/${MANAGED_DLL}.dll\n")
|
|
ENDFOREACH()
|
|
FILE(WRITE ${LINUX_CONTROL_FILE_FOLDER}/clifilelist.txt ${CLIFILELIST_CONTENT})
|
|
INSTALL(
|
|
FILES
|
|
${LINUX_CONTROL_FILE_FOLDER}/clifilelist.txt
|
|
DESTINATION ${CPACK_PACKAGE_CLI_FOLDER}
|
|
COMPONENT emgucv_binary)
|
|
|
|
#creating the pkg-config file
|
|
SET(PACKAGE_CFG_REF_CONTENT "")
|
|
FOREACH(MANAGED_DLL ${EMGUCV_MANAGED_DLLS})
|
|
SET(PACKAGE_CFG_REF_CONTENT "${PACKAGE_CFG_REF_CONTENT} -r:\${libdir}/${MANAGED_DLL}.dll")
|
|
ENDFOREACH()
|
|
|
|
FILE(WRITE ${LINUX_CONTROL_FILE_FOLDER}/${CPACK_PACKAGE_NAME}.pc
|
|
"prefix=/usr\nexec_prefix=\${prefix}\nlibdir=\${exec_prefix}/${CPACK_PACKAGE_CLI_FOLDER}\napidir=\${exec_prefix}/${CPACK_PACKAGE_CLI_FOLDER}\n\nName: ${CPACK_PACKAGE_NAME}\nDescription: ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\nVersion: ${CPACK_PACKAGE_VERSION}\nLibs: ${PACKAGE_CFG_REF_CONTENT}\n")
|
|
INSTALL(
|
|
FILES
|
|
${LINUX_CONTROL_FILE_FOLDER}/${CPACK_PACKAGE_NAME}.pc
|
|
DESTINATION /usr/lib/pkgconfig
|
|
COMPONENT emgucv_binary)
|
|
|
|
SET(REMOVE_EMGU_FROM_GAC_SCRIPT "")
|
|
FOREACH(MANAGED_DLL ${EMGUCV_MANAGED_DLLS})
|
|
SET(REMOVE_EMGU_FROM_GAC_SCRIPT "${REMOVE_EMGU_FROM_GAC_SCRIPT} ${MANAGED_DLL}")
|
|
ENDFOREACH()
|
|
SET(REMOVE_EMGU_FROM_GAC_SCRIPT "for dll in${REMOVE_EMGU_FROM_GAC_SCRIPT}; do ${MONO_GACUTIL_EXEC} -u $dll; done")
|
|
|
|
SET(CPACK_STRIP_FILES "")
|
|
|
|
IF(NOT CPACK_GENERATOR)
|
|
MESSAGE(STATUS "Checking for CPACK build type...")
|
|
FIND_PROGRAM(DPKG_CMD dpkg)
|
|
IF (DPKG_CMD)
|
|
# ----------------------------------------------------------------------------
|
|
# Building .deb package for Debian
|
|
# ----------------------------------------------------------------------------
|
|
MESSAGE(STATUS "FOUND dpkg: ${DPKG_CMD}")
|
|
LIST(APPEND CPACK_GENERATOR DEB)
|
|
ENDIF()
|
|
|
|
FIND_PROGRAM(RPMBUILD_CMD rpmbuild)
|
|
IF(RPMBUILD_CMD)
|
|
# ----------------------------------------------------------------------------
|
|
# Building .rpm package
|
|
# ----------------------------------------------------------------------------
|
|
MESSAGE(STATUS "FOUND rpmbuild: ${RPMBUILD_CMD}")
|
|
LIST(APPEND CPACK_GENERATOR RPM)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
SET(PREINST_SCRIPT "#!/bin/sh\nmkdir -p /usr/lib/pkgconfig /usr/${CPACK_PACKAGE_CLI_FOLDER} /usr/share/opencv/haarcascades /usr/share/opencv/lbpcascades /usr/share/opencv/doc \n")
|
|
LIST(FIND CPACK_GENERATOR "DEB" TEMP)
|
|
IF(NOT (${TEMP} EQUAL -1))
|
|
SET(DEBIAN_CONTROL_FILE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian")
|
|
FILE(WRITE ${DEBIAN_CONTROL_FILE_FOLDER}/preinst ${PREINST_SCRIPT})
|
|
FILE(WRITE ${DEBIAN_CONTROL_FILE_FOLDER}/postinst
|
|
"#!/bin/sh\nset -e\nif [ \"$1\" = \"configure\" ]; then\n ldconfig\n ${MONO_GACUTIL_EXEC} -il /usr/${CPACK_PACKAGE_CLI_FOLDER}/clifilelist.txt -package ${CPACK_PACKAGE_NAME}\nfi\n")
|
|
FILE(WRITE ${DEBIAN_CONTROL_FILE_FOLDER}/prerm
|
|
"#!/bin/sh\nset -e\nif [ \"$1\" = \"remove\" ] || [ \"$1\" = \"upgrade\" ] && [ -x /usr/share/cli-common/gac-package-remove ]; then\n${REMOVE_EMGU_FROM_GAC_SCRIPT}\nfi\n")
|
|
|
|
SET(DEBIAN_PACKAGE_PRIORITY "optional")
|
|
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${DEBIAN_CONTROL_FILE_FOLDER}/preinst;${DEBIAN_CONTROL_FILE_FOLDER}/postinst;${DEBIAN_CONTROL_FILE_FOLDER}/prerm;${DEBIAN_CONTROL_FILE_FOLDER}/postrm")
|
|
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "mono-runtime (>> 2.4.2), mono-2.0-gac, libtiff5, libgeotiff2, libgtk-3-0, libgstreamer1.0-0, libavcodec54, libswscale2, libavformat54, libopenexr6, libjasper1, libdc1394-22, libv4l-0, libqt4-opengl")
|
|
IF(EMGU_CV_WITH_TESSERACT)
|
|
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libtesseract3")
|
|
ENDIF()
|
|
IF(WITH_TBB)
|
|
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libtbb2")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
LIST(FIND CPACK_GENERATOR "RPM" TEMP)
|
|
IF(NOT (${TEMP} EQUAL -1))
|
|
SET(CPACK_RPM_PACKAGE_LICENSE "GPL v3")
|
|
SET(CPACK_RPM_PACKAGE_REQUIRES "mono-core >= 2.6, mono-wcf, jasper, libgeotiff, gtk2, OpenEXR, libv4l, libdc1394, qt")
|
|
IF (WITH_TBB)
|
|
SET(CPACK_RPM_PACKAGE_REQUIRES ", tbb")
|
|
ENDIF()
|
|
IF(EMGUCV_WITH_TESSERACT AND TESSERACT_FOUND)
|
|
SET(CPACK_RPM_PACKAGE_REQUIRES ", tesseract")
|
|
ENDIF()
|
|
SET(RPM_CONTROL_FILE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm")
|
|
FILE(WRITE ${RPM_CONTROL_FILE_FOLDER}/preinst ${PREINST_SCRIPT})
|
|
FILE(WRITE ${RPM_CONTROL_FILE_FOLDER}/postinst
|
|
"ldconfig\n${MONO_GACUTIL_EXEC} -il /usr/${CPACK_PACKAGE_CLI_FOLDER}/clifilelist.txt -package ${CPACK_PACKAGE_NAME}\n")
|
|
FILE(WRITE ${RPM_CONTROL_FILE_FOLDER}/prerm
|
|
"${REMOVE_EMGU_FROM_GAC_SCRIPT}\n")
|
|
SET(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${RPM_CONTROL_FILE_FOLDER}/preinst")
|
|
SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${RPM_CONTROL_FILE_FOLDER}/postinst")
|
|
SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${RPM_CONTROL_FILE_FOLDER}/prerm")
|
|
SET(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${RPM_CONTROL_FILE_FOLDER}/postrm")
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "CPACK_GENERATOR: ${CPACK_GENERATOR}")
|
|
INCLUDE (CPack)
|