123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- include(${QT_PROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
- macro(qt_protobuf_internal_find_dependencies)
- find_package(Qt5 COMPONENTS Core Qml Network REQUIRED)
- find_package(Threads REQUIRED)
- if(NOT TARGET ${QT_PROTOBUF_PROJECT}::QtProtobuf)
- find_package(${QT_PROTOBUF_PROJECT} COMPONENTS QtProtobuf REQUIRED)
- endif()
- if(NOT TARGET ${QT_PROTOBUF_PROJECT}::QtGrpc)
- find_package(${QT_PROTOBUF_PROJECT} COMPONENTS QtGrpc REQUIRED)
- endif()
- if(QT_PROTOBUF_STATIC)
- add_definitions(-DQT_PROTOBUF_STATIC)# add_definitions is used because old cmake versions
- # compatibility
- endif()
- set(CMAKE_POSITION_INDEPENDENT_CODE ${Qt5_POSITION_INDEPENDENT_CODE})
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- endmacro()
- function(qt_protobuf_internal_add_test_target)
- set(options MULTI QML FIELDENUM)
- set(oneValueArgs QML_DIR TARGET)
- set(multiValueArgs SOURCES GENERATED_HEADERS EXCLUDE_HEADERS PROTO_FILES PROTO_INCLUDES)
- cmake_parse_arguments(add_test_target "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
- find_package(Qt5 COMPONENTS Test REQUIRED)
- ## test sources build
- # policy enables automoc for generated files
- if(${CMAKE_VERSION} VERSION_GREATER "3.10.0")
- cmake_policy(SET CMP0071 NEW)
- endif()
- set(CMAKE_POSITION_INDEPENDENT_CODE ${Qt5_POSITION_INDEPENDENT_CODE})
- set(GENERATED_SOURCES_DIR ${CMAKE_CURRENT_BINARY_DIR}/${add_test_target_TARGET}_generated)
- if(DEFINED add_test_target_PROTO_FILES)
- file(GLOB PROTO_FILES ABSOLUTE ${add_test_target_PROTO_FILES})
- else()
- file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/proto/*.proto)
- endif()
- add_executable(${add_test_target_TARGET} ${add_test_target_SOURCES})
- set(EXTRA_OPTIONS COMMENTS)
- if(add_test_target_MULTI)
- set(EXTRA_OPTIONS ${EXTRA_OPTIONS} MULTI)
- endif()
- if(add_test_target_QML)
- set(EXTRA_OPTIONS ${EXTRA_OPTIONS} QML)
- endif()
- if(add_test_target_FIELDENUM)
- set(EXTRA_OPTIONS ${EXTRA_OPTIONS} FIELDENUM)
- endif()
- qtprotobuf_generate(TARGET ${add_test_target_TARGET}
- OUT_DIR ${GENERATED_SOURCES_DIR}
- PROTO_FILES ${PROTO_FILES}
- GENERATED_HEADERS ${add_test_target_GENERATED_HEADERS}
- EXCLUDE_HEADERS ${add_test_target_EXCLUDE_HEADERS}
- ${EXTRA_OPTIONS}
- PROTO_INCLUDES ${add_test_target_PROTO_INCLUDES})
- target_link_libraries(${add_test_target_TARGET} PUBLIC gtest_main
- gtest
- ${QT_PROTOBUF_PROJECT}::QtProtobuf
- ${QT_PROTOBUF_PROJECT}::QtGrpc
- Qt5::Core
- Qt5::Test
- Qt5::Network
- ${CMAKE_THREAD_LIBS_INIT})
- if (${add_test_target_QML})
- target_link_libraries(${add_test_target_TARGET} PUBLIC Qt5::Qml)
- endif()
- endfunction()
- function(qt_protobuf_internal_add_example_target)
- set(options)
- set(oneValueArgs TARGET QML_DIR)
- set(multiValueArgs SOURCES PROTO_FILES RESOURCES)
- cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
- find_package(Qt5 COMPONENTS Quick REQUIRED)
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- file(GLOB PROTO_FILES ABSOLUTE ${arg_PROTO_FILES})
- file(GLOB SOURCES ${arg_SOURCES})
- add_executable(${TARGET} ${SOURCES} ${arg_RESOURCES})
- qtprotobuf_generate(TARGET ${TARGET}
- OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated
- PROTO_FILES ${PROTO_FILES}
- QML)
- add_target_windeployqt(TARGET ${TARGET} QML_DIR ${arg_QML_DIR})
- target_link_libraries(${TARGET} PRIVATE examples_common
- QtProtobufProject::QtProtobuf
- QtProtobufProject::QtGrpc
- Qt5::Quick
- Qt5::Qml)
- endfunction()
|