CMakeLists.txt 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. cmake_minimum_required(VERSION 3.12)
  2. project(paddle_model_protect)
  3. set(CMAKE_CXX_STANDARD 11)
  4. option(WITH_PADDLE "build with paddle libs" ON)
  5. IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
  6. option(PM_EXPORTS "export symbols in windows" ON)
  7. IF (PM_EXPORTS)
  8. message("add_definitions of PM_EXPORTS")
  9. add_definitions("-DPM_EXPORTS")
  10. ENDIF ()
  11. ENDIF ()
  12. IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  13. # use "-fvisibility=hidden" instead of "-Wl,--version-script ${CMAKE_CURRENT_SOURCE_DIR}/export_rule.map"
  14. set(CMAKE_C_VISIBILITY_PRESET hidden)
  15. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  16. set(CMAKE_C_FLAGS "-g -O2 -fPIC ${CMAKE_C_FLAGS}")
  17. set(CMAKE_CXX_FLAGS "-g -O2 -fPIC ${CMAKE_CXX_FLAGS}")
  18. ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows")
  19. set(CMAKE_C_FLAGS_RELEASE "/MT")
  20. set(CMAKE_CXX_FLAGS_RELEASE "/MT")
  21. ENDIF ()
  22. SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output/bin)
  23. SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output/lib)
  24. file(COPY "${PROJECT_SOURCE_DIR}/include/paddle_model_encrypt.h" DESTINATION "${PROJECT_SOURCE_DIR}/output/include/paddle_model_encrypt.h")
  25. IF(WITH_PADDLE)
  26. file(COPY "${PROJECT_SOURCE_DIR}/include/paddle_model_decrypt.h" DESTINATION "${PROJECT_SOURCE_DIR}/output/include/paddle_model_decrypt.h")
  27. ENDIF()
  28. file(COPY "${PROJECT_SOURCE_DIR}/include/paddle_stream_decrypt.h" DESTINATION "${PROJECT_SOURCE_DIR}/output/include/paddle_stream_decrypt.h")
  29. file(COPY "${PROJECT_SOURCE_DIR}/include/model_code.h" DESTINATION "${PROJECT_SOURCE_DIR}/output/include/model_code.h")
  30. set(SRC_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
  31. set(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rd/openssl-1.1.0k/install-${CMAKE_SYSTEM_PROCESSOR}")
  32. set(OPENSSL_INCLUDE "${OPENSSL_ROOT_DIR}/include")
  33. IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
  34. set(OPENSSL_LIBS
  35. "${OPENSSL_ROOT_DIR}/lib/libssl_static.lib"
  36. "${OPENSSL_ROOT_DIR}/lib/libcrypto_static.lib")
  37. ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Linux")
  38. set(OPENSSL_LIBS
  39. "${OPENSSL_ROOT_DIR}/lib/libssl.a"
  40. "${OPENSSL_ROOT_DIR}/lib/libcrypto.a")
  41. ENDIF ()
  42. IF(WITH_PADDLE)
  43. set(PADDLE_INCLUDE_DIR "${PADDLE_DIR}/include")
  44. IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
  45. # -DPADDLE_DIR=C:\developer\Paddle-developer\Paddle\build\fluid_inference_install_dir\paddle
  46. # developer paddle_fluid.lib
  47. # set(PADDLE_LIBS "${PADDLE_DIR}/lib/paddle_fluid.lib")
  48. # 2.0.1 paddle_inference.lib
  49. set(PADDLE_LIBS "${PADDLE_DIR}/lib/paddle_inference.lib")
  50. ENDIF ()
  51. ENDIF ()
  52. IF(WITH_PADDLE)
  53. message("build with paddle libs")
  54. include_directories(
  55. include
  56. ${OPENSSL_INCLUDE}
  57. ${PADDLE_INCLUDE_DIR}
  58. )
  59. ELSE()
  60. message("build no paddle libs")
  61. include_directories(
  62. include
  63. ${OPENSSL_INCLUDE}
  64. )
  65. ENDIF()
  66. IF (MSVC)
  67. # Visual Studio 2015
  68. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ws2_32.lib /NODEFAULTLIB:libcmt.lib")
  69. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ws2_32.lib /NODEFAULTLIB:libcmt.lib")
  70. ENDIF ()
  71. add_subdirectory(${SRC_ROOT_DIR})