123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- cmake_minimum_required(VERSION 3.5)
- project(PLCRegistrationTool VERSION 0.1 LANGUAGES CXX)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- execute_process(COMMAND bash ${PROJECT_SOURCE_DIR}/proto.sh ${PROJECT_SOURCE_DIR})
- add_definitions(-DETC_PATH="${PROJECT_SOURCE_DIR}")
- find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
- find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
- find_package(Protobuf REQUIRED)
- include_directories(
- /usr/local/include/snap7
- ${PROJECT_SOURCE_DIR}/include
- ${PROJECT_SOURCE_DIR}/include/plc
- )
- # Don't search with REQUIRED as we can continue without gflags.
- find_package(gflags 2.2.0)
- if (gflags_FOUND)
- if (TARGET gflags)
- message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${gflags_DIR}")
- message("-- Found Google Flags (gflags) version ${gflags_VERSION}: ${GFLAGS_LIBRARIES}")
- else()
- message("-- Detected version of gflags: ${gflags_VERSION} does not define "
- "expected gflags CMake target which should be exported by gflags 2.2+. "
- "Building without gflags.")
- update_cache_variable(GFLAGS OFF)
- endif()
- else (gflags_FOUND)
- message("-- Did not find Google Flags (gflags), Building without gflags.")
- update_cache_variable(GFLAGS OFF)
- endif (gflags_FOUND)
- find_package(glog REQUIRED)
- aux_source_directory(${PROJECT_SOURCE_DIR}/include/plc PLC_SRC)
- aux_source_directory(${PROJECT_SOURCE_DIR}/include/tool TOOL_SRC)
- aux_source_directory(${PROJECT_SOURCE_DIR}/include/json JSON_SRC)
- set(PROJECT_SOURCES
- main.cpp
- mainwindow.cpp
- mainwindow.h
- mainwindow.ui
- proto_tool.cpp
- proto_tool.h
- velodyne_config.pb.h
- velodyne_config.pb.cc
- ${TOOL_SRC}
- ${PLC_SRC}
- ${JSON_SRC}
- )
- if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
- qt_add_executable(PLCRegistrationTool
- MANUAL_FINALIZATION
- ${PROJECT_SOURCES}
- )
- # Define target properties for Android with Qt 6 as:
- # set_property(TARGET PLCRegistrationTool APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
- # ${CMAKE_CURRENT_SOURCE_DIR}/android)
- # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
- else()
- if(ANDROID)
- add_library(PLCRegistrationTool SHARED
- ${PROJECT_SOURCES}
- )
- # Define properties for Android with Qt 5 after find_package() calls as:
- # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
- else()
- add_executable(PLCRegistrationTool
- ${PROJECT_SOURCES}
- )
- endif()
- endif()
- target_link_libraries(PLCRegistrationTool PRIVATE Qt${QT_VERSION_MAJOR}::Widgets
- ${PROTOBUF_LIBRARIES}
- -lgflags
- glog::glog
- snap7
- )
- set_target_properties(PLCRegistrationTool PROPERTIES
- MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
- MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
- MACOSX_BUNDLE TRUE
- WIN32_EXECUTABLE TRUE
- )
- install(TARGETS PLCRegistrationTool
- BUNDLE DESTINATION .
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- )
- if(QT_VERSION_MAJOR EQUAL 6)
- qt_finalize_executable(PCLRegistrationTool)
- endif()
|