# 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 "$<$:${LIBRARY_OUTPUT_PATH}\\Debug\\huagaotwain.dll>" "$<$:${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)