CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. set(MODULE_NAME "spshell")
  2. set(MODULE_PREFIX "SPSHELL")
  3. if(WITH_QT_GUI)
  4. message(STATUS "build spshell with QT GUI")
  5. set(CMAKE_AUTOUIC ON)
  6. set(CMAKE_AUTOMOC ON)
  7. set(CMAKE_AUTORCC ON)
  8. if(ARCH_AARCH64)
  9. if(NOT CONAN_EXPORTED)
  10. conan_cmake_run(REQUIRES qt/5.11.3@LR04.02_ThirdParty/testing BASIC_SETUP
  11. # OPTIONS qttools=True qtcharts=True
  12. CMAKE_TARGETS BUILD missing)
  13. endif(NOT CONAN_EXPORTED)
  14. set(QT5_HINT_PATH ${CONAN_QT_ROOT})
  15. else()
  16. if(MSVC)
  17. set(QT5_HINT_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017/")
  18. else()
  19. set(QT5_HINT_PATH "/opt/Qt5.14.2/5.14.2/gcc_64/lib/cmake/")
  20. endif(MSVC)
  21. endif(ARCH_AARCH64)
  22. find_package(Qt5 COMPONENTS Widgets REQUIRED
  23. HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
  24. find_package(Qt5Charts HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
  25. find_package(Qt5UiTools HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
  26. endif(WITH_QT_GUI)
  27. set(${MODULE_PREFIX}_SRCS
  28. app.cpp
  29. log.cpp
  30. spshell.cpp
  31. stdafx.cpp
  32. svc.cpp
  33. IOCPSocketServer.cpp
  34. SpShellConsole.cpp
  35. TelnetServer.cpp
  36. )
  37. if(WITH_QT_GUI)
  38. list(APPEND ${MODULE_PREFIX}_SRCS
  39. QtBootSender.cpp
  40. PollCenter.cpp
  41. )
  42. endif(WITH_QT_GUI)
  43. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
  44. if (WIN32)
  45. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  46. set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
  47. set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
  48. set (RC_VERSION_PATCH ${RVC_VERSION_BUILD})
  49. configure_file(
  50. ${CMAKE_SOURCE_DIR}/Version.rc.in
  51. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  52. @ONLY)
  53. set (${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  54. endif()
  55. include_directories(${RVCFRAMEWORK_SOURCES_DIR})
  56. include_directories(${RVCFRAMEWORK_SOURCES_DIR}/spbase)
  57. include_directories(${RVCFRAMEWORK_SOURCES_DIR}/libtoolkit)
  58. if(WITH_QT_GUI)
  59. file(GLOB QT_SRCS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
  60. "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/*"
  61. "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/treemodel/*"
  62. "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/floatwidget/*")
  63. if(NOT WIN32)
  64. list(REMOVE_ITEM QT_SRCS
  65. Widgets/sysinfowindowsimpl.cpp
  66. Widgets/sysinfowindowsimpl.h
  67. )
  68. else()
  69. list(REMOVE_ITEM QT_SRCS
  70. Widgets/sysinfolinuximpl.cpp
  71. Widgets/sysinfolinuximpl.h
  72. )
  73. endif(NOT WIN32)
  74. list(APPEND ${MODULE_PREFIX}_SRCS ${QT_SRCS})
  75. endif(WITH_QT_GUI)
  76. add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS})
  77. if(WITH_QT_GUI)
  78. target_compile_definitions(${MODULE_NAME} PRIVATE "WITH_QT")
  79. endif(WITH_QT_GUI)
  80. if(MSVC)
  81. # run as administration privilidege
  82. set_target_properties(${MODULE_NAME}
  83. PROPERTIES LINK_FLAGS
  84. "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
  85. endif(MSVC)
  86. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  87. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
  88. target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Widgets)
  89. if(WITH_QT_GUI)
  90. set_target_properties(${MODULE_NAME} PROPERTIES AUTOMOC TRUE)
  91. endif(WITH_QT_GUI)
  92. list(APPEND ${MODULE_PREFIX}_LIBS libtoolkit spbase)
  93. if(MSVC)
  94. # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
  95. list(APPEND ${MODULE_PREFIX}_LIBS
  96. ws2_32
  97. DbgHelp
  98. psapi
  99. )
  100. else()
  101. list(APPEND ${MODULE_PREFIX}_LIBS winpr)
  102. endif()
  103. if(WITH_QT_GUI)
  104. list(APPEND ${MODULE_PREFIX}_LIBS Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Charts Qt5::UiTools)
  105. endif(WITH_QT_GUI)
  106. target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  107. install(TARGETS ${MODULE_NAME}
  108. RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
  109. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  110. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
  111. COMPONENT libraries)
  112. if (WITH_DEBUG_SYMBOLS AND MSVC)
  113. install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
  114. endif()
  115. #不再在bin目录下附带QT相关的内容
  116. if(FALSE AND WITH_QT_GUI AND ARCH_AARCH64)
  117. file(GLOB LACK_QT_FILES "${CONAN_LIB_DIRS_QT}/libQt5Charts.so*" "${CONAN_LIB_DIRS_QT}/libQt5DBus.so*")
  118. install(PROGRAMS ${LACK_QT_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
  119. if(CONAN_EXPORTED)
  120. file(COPY ${LACK_QT_FILES} DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
  121. endif(CONAN_EXPORTED)
  122. endif(FALSE AND WITH_QT_GUI AND ARCH_AARCH64)