123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- set(MODULE_NAME "spshell")
- set(MODULE_PREFIX "SPSHELL")
- if(WITH_QT_GUI)
- message(STATUS "build spshell with QT GUI")
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- if(ARCH_AARCH64)
- if(NOT CONAN_EXPORTED)
- conan_cmake_run(REQUIRES qt/5.11.3@LR04.02_ThirdParty/testing BASIC_SETUP
- # OPTIONS qttools=True qtcharts=True
- CMAKE_TARGETS BUILD missing)
- endif(NOT CONAN_EXPORTED)
- set(QT5_HINT_PATH ${CONAN_QT_ROOT})
- else()
- if(MSVC)
- set(QT5_HINT_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017/")
- else()
- set(QT5_HINT_PATH "/opt/Qt5.14.2/5.14.2/gcc_64/lib/cmake/")
- endif(MSVC)
- endif(ARCH_AARCH64)
- find_package(Qt5 COMPONENTS Widgets REQUIRED
- HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
- find_package(Qt5Charts HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
- find_package(Qt5UiTools HINTS ${QT5_HINT_PATH} NO_SYSTEM_ENVIRONMENT_PATH )
- endif(WITH_QT_GUI)
- set(${MODULE_PREFIX}_SRCS
- app.cpp
- log.cpp
- spshell.cpp
- stdafx.cpp
- svc.cpp
- IOCPSocketServer.cpp
- SpShellConsole.cpp
- TelnetServer.cpp
- )
- if(WITH_QT_GUI)
- list(APPEND ${MODULE_PREFIX}_SRCS
- QtBootSender.cpp
- PollCenter.cpp
- )
- endif(WITH_QT_GUI)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
- if (WIN32)
- set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
- set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
- set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
- set (RC_VERSION_PATCH ${RVC_VERSION_BUILD})
- configure_file(
- ${CMAKE_SOURCE_DIR}/Version.rc.in
- ${CMAKE_CURRENT_BINARY_DIR}/version.rc
- @ONLY)
- set (${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
- endif()
- include_directories(${RVCFRAMEWORK_SOURCES_DIR})
- include_directories(${RVCFRAMEWORK_SOURCES_DIR}/spbase)
- include_directories(${RVCFRAMEWORK_SOURCES_DIR}/libtoolkit)
- if(WITH_QT_GUI)
- file(GLOB QT_SRCS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
- "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/*"
- "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/treemodel/*"
- "${CMAKE_CURRENT_SOURCE_DIR}/Widgets/floatwidget/*")
- if(NOT WIN32)
- list(REMOVE_ITEM QT_SRCS
- Widgets/sysinfowindowsimpl.cpp
- Widgets/sysinfowindowsimpl.h
- )
- else()
- list(REMOVE_ITEM QT_SRCS
- Widgets/sysinfolinuximpl.cpp
- Widgets/sysinfolinuximpl.h
- )
- endif(NOT WIN32)
- list(APPEND ${MODULE_PREFIX}_SRCS ${QT_SRCS})
- endif(WITH_QT_GUI)
- add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS})
- if(WITH_QT_GUI)
- target_compile_definitions(${MODULE_NAME} PRIVATE "WITH_QT")
- endif(WITH_QT_GUI)
- if(MSVC)
- # run as administration privilidege
- set_target_properties(${MODULE_NAME}
- PROPERTIES LINK_FLAGS
- "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
- endif(MSVC)
- target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
- target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
- target_include_directories(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Widgets)
- if(WITH_QT_GUI)
- set_target_properties(${MODULE_NAME} PROPERTIES AUTOMOC TRUE)
- endif(WITH_QT_GUI)
- list(APPEND ${MODULE_PREFIX}_LIBS libtoolkit spbase)
- if(MSVC)
- # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
- list(APPEND ${MODULE_PREFIX}_LIBS
- ws2_32
- DbgHelp
- psapi
- )
- else()
- list(APPEND ${MODULE_PREFIX}_LIBS winpr)
- endif()
- if(WITH_QT_GUI)
- list(APPEND ${MODULE_PREFIX}_LIBS Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Charts Qt5::UiTools)
- endif(WITH_QT_GUI)
- target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
- install(TARGETS ${MODULE_NAME}
- RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
- ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
- LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
- COMPONENT libraries)
- if (WITH_DEBUG_SYMBOLS AND MSVC)
- install(FILES ${RVC_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
- endif()
- #不再在bin目录下附带QT相关的内容
- if(FALSE AND WITH_QT_GUI AND ARCH_AARCH64)
- file(GLOB LACK_QT_FILES "${CONAN_LIB_DIRS_QT}/libQt5Charts.so*" "${CONAN_LIB_DIRS_QT}/libQt5DBus.so*")
- install(PROGRAMS ${LACK_QT_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
- if(CONAN_EXPORTED)
- file(COPY ${LACK_QT_FILES} DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
- endif(CONAN_EXPORTED)
- endif(FALSE AND WITH_QT_GUI AND ARCH_AARCH64)
|