twain3.0/huagao/CMakeLists.txt

127 lines
4.7 KiB
CMake

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
project(huagotwainds)
if (MSVC_VERSION GREATER_EQUAL "1900")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("/std:c++17" _cpp_latest_flag_supported)
if (_cpp_latest_flag_supported)
add_compile_options("/std:c++17")
endif()
endif()
execute_process(
COMMAND git log -1 --format=%H
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_VERSION
)
execute_process(
COMMAND git remote -v
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_REMOTE_PATH
)
#string (REGEX REPLACE ".*\t| .*" "" GIT_PATH ${GIT_REMOTE_PATH})
#string (REGEX REPLACE "[\n\t\r]" "" GIT_VERSION ${GIT_VERSION})
file(GLOB DEV_SRC ${PROJECT_SOURCE_DIR}/Device/*.h ${PROJECT_SOURCE_DIR}/Device/*.cpp)
file(GLOB IMGPROC_SRC ${PROJECT_SOURCE_DIR}/ImageProcess/*.h ${PROJECT_SOURCE_DIR}/ImageProcess/*.cpp)
file(GLOB SRC ${PROJECT_SOURCE_DIR}/*.h ${PROJECT_SOURCE_DIR}/*.cpp)
aux_source_directory(${PROJECT_SOURCE_DIR} DIR_SRCS)
aux_source_directory(${PROJECT_SOURCE_DIR}/Device DIR_DEVICE)
aux_source_directory(${PROJECT_SOURCE_DIR}/ImageProcess DIR_IMGPROC)
set(DIR_RC huagaotwds.rc)
source_group("RC Files" FILES ${DIR_RC})
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/..
${PROJECT_SOURCE_DIR}/../twpp
${PROJECT_SOURCE_DIR}/../3rdparty/nick
${PROJECT_SOURCE_DIR}/../3rdparty/cyusb/inc
${PROJECT_SOURCE_DIR}/../3rdparty/libtiff/include
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/include/ccstruct
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/include/ccmain
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/include/ccutil
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/leptonica
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/include/api
${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include
${PROJECT_SOURCE_DIR}/../3rdparty/log4cplus/include
${PROJECT_SOURCE_DIR}/../3rdparty/cryptoPP/include
)
message($ENV{windir})
link_directories(
${PROJECT_SOURCE_DIR}/../3rdparty/opencv/x86/staticlib/
${PROJECT_SOURCE_DIR}/../3rdparty/libtiff/
${PROJECT_SOURCE_DIR}/../3rdparty/log4cplus/lib/
${PROJECT_SOURCE_DIR}/../3rdparty/cyusb/lib/windows/x86/
${PROJECT_SOURCE_DIR}/../3rdparty/hgOCR/x86/staticlib/
${PROJECT_SOURCE_DIR}/../3rdparty/cryptoPP/lib/x86/
)
MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}")
MACRO(RW_LINK_3RD_PART_LIBRARY FULL_LIBRARY_NAME)
link_libraries(optimized ${FULL_LIBRARY_NAME})
link_libraries(debug ${FULL_LIBRARY_NAME}d)
ENDMACRO()
MACRO(RW_LINK_OCR_LIBRARY FULL_LIBRARY_NAME)
link_libraries(optimized ${FULL_LIBRARY_NAME})
link_libraries(debug ${FULL_LIBRARY_NAME})
ENDMACRO()
IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
MESSAGE(STATUS "current platform: Linux ")
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows")
RW_LINK_3RD_PART_LIBRARY(opencv_world3414)
RW_LINK_3RD_PART_LIBRARY(IlmImf)
RW_LINK_3RD_PART_LIBRARY(libjasper)
RW_LINK_3RD_PART_LIBRARY(libjpeg-turbo)
RW_LINK_3RD_PART_LIBRARY(libpng)
RW_LINK_3RD_PART_LIBRARY(libtiff)
RW_LINK_3RD_PART_LIBRARY(libwebp)
RW_LINK_3RD_PART_LIBRARY(zlib)
RW_LINK_3RD_PART_LIBRARY(ittnotify)
#link_libraries(libwebp)
RW_LINK_3RD_PART_LIBRARY(quirc)
RW_LINK_OCR_LIBRARY(leptonica)
RW_LINK_OCR_LIBRARY(HG_OCR)
link_libraries(CyAPI)
RW_LINK_3RD_PART_LIBRARY(log4cplusS)
RW_LINK_3RD_PART_LIBRARY(cryptlib)
MESSAGE(STATUS "current platform: Windows")
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
MESSAGE(STATUS "current platform: FreeBSD")
ELSE ()
MESSAGE(STATUS "other platform: ${CMAKE_SYSTEM_NAME}")
ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux")
add_definitions(-DTWPP_IS_DS -D_CRT_SECURE_NO_WARNINGS -D_DIRECT_BUILD -D_NOT_USE -D_AFXDLL -D_UNICODE -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_CRT_NON_CONFORMING_SWPRINTFS -D_WIN32)
#add_definitions(-DGIT_VERSION=\"${GIT_VERSION}\")
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
SET(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:"MSVCRTd.lib;mfcs140ud.lib")
ELSE()
SET(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:"MSVCRT.lib;mfcs140u.lib")
ENDIF()
RW_LINK_3RD_PART_LIBRARY(mfcs140u)
RW_LINK_3RD_PART_LIBRARY(MSVCRT)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
# 指定生成目标
add_library(huagaotwain SHARED ${DIR_SRCS} ${PROJECT_SOURCE_DIR}/exports.def ${DEV_SRC} ${IMGPROC_SRC} ${SRC} ${DIR_RC})
#target_link_libraries(huagaotwain PRIVATE Qt5::Widgets ${Qt5_STATIC_LINK_LIBRARIES} gdev gimgproc)
#target_link_directories(huagaotwain PRIVATE ${Qt5_STATIC_LINK_DIR})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/redistribute)
set(huagaotwain_path "$<$<CONFIG:Debug>:${LIBRARY_OUTPUT_PATH}\\Debug\\huagaotwain.dll>" "$<$<CONFIG:Release>:${LIBRARY_OUTPUT_PATH}\\Release\\huagaotwain.dll>")
string(REPLACE "/" "\\" huagaotwain_path ${huagaotwain_path})
add_custom_command(TARGET huagaotwain POST_BUILD COMMAND copy ${huagaotwain_path} $ENV{windir}\\twain_32\\huagoscan\\huagaotwain.ds)