123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- set(testgeneration "test_generation")
- set(TESTS_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
- file(MAKE_DIRECTORY ${TESTS_OUT_DIR})
- file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/proto/*.proto)
- ## test sources generation
- if(WIN32)
- set(Protobuf_PROTOC_EXECUTABLE ${PROTOBUF_INSTALATION_PATH}/bin/protoc.exe)
- endif()
- add_custom_target(${testgeneration})
- add_custom_command(TARGET ${testgeneration}
- COMMAND ${Protobuf_PROTOC_EXECUTABLE} --plugin=protoc-gen-${PROJECT_NAME}=$<TARGET_FILE:${PROJECT_NAME}> --qtprotobuf_out=${TESTS_OUT_DIR} -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/ ${PROTO_FILES}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/proto/
- DEPENDS ${PROTO_FILES}
- COMMENT "Generating test headers"
- )
- add_dependencies(${testgeneration} ${PROJECT_NAME})
- ## 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_INCLUDE_CURRENT_DIR ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- if(Qt5_POSITION_INDEPENDENT_CODE)
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
- endif()
- set(EXPECTED_GENERATED_HEADERS
- complexmessage.h
- externalcomplexmessage.h
- globalenums.h
- repeatedbytesmessage.h
- repeatedcomplexmessage.h
- repeateddoublemessage.h
- repeatedexternalcomplexmessage.h
- repeatedfixedint64message.h
- repeatedfixedintmessage.h
- repeatedfloatmessage.h
- repeatedint64message.h
- repeatedintmessage.h
- repeatedsfixedint64message.h
- repeatedsfixedintmessage.h
- repeatedsint64message.h
- repeatedsintmessage.h
- repeatedstringmessage.h
- repeateduint64message.h
- repeateduintmessage.h
- simpleboolmessage.h
- simplebytesmessage.h
- simpledoublemessage.h
- simpleenummessage.h
- simpleexternalenummessage.h
- simpleexternalmessage.h
- simplefileenummessage.h
- simplefixedint32message.h
- simplefixedint64message.h
- simplefloatmessage.h
- simpleint64message.h
- simpleintmessage.h
- simplesfixedint32message.h
- simplesfixedint64message.h
- simplesint64message.h
- simplesintmessage.h
- simplestringmessage.h
- simpleuint64message.h
- simpleuintmessage.h
- stepchildenummessage.h
- testserviceclient.h
- testserviceserver.h
- simpleenumlistmessage.h
- )
- foreach(EXPECTED_GENERATED_HEADER ${EXPECTED_GENERATED_HEADERS})
- get_filename_component(GENERATED_HEADER_BASENAME ${EXPECTED_GENERATED_HEADER} NAME_WE)
- list(APPEND GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${GENERATED_HEADER_BASENAME}.cpp)
- list(APPEND GENERATED_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/${GENERATED_HEADER_BASENAME}.h)
- if(${CMAKE_VERSION} VERSION_LESS "3.10.0")
- set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${GENERATED_HEADER_BASENAME}.cpp PROPERTY SKIP_AUTOMOC ON)
- endif()
- endforeach(EXPECTED_GENERATED_HEADER)
- if(${CMAKE_VERSION} VERSION_LESS "3.10.0")
- qt5_wrap_cpp(MOC_SOURCES ${GENERATED_HEADERS})
- list(APPEND GENERATED_SOURCES ${MOC_SOURCES})
- endif()
- # TODO: so far the following cpp files are not generated
- list(REMOVE_ITEM GENERATED_SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/testserviceserver.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/globalenums.cpp
- )
- set_source_files_properties(${GENERATED_SOURCES} PROPERTIES GENERATED TRUE)
- # TODO: but their headers should be included in sources for executable to be processed by moc
- list(APPEND GENERATED_SOURCES
- ${CMAKE_CURRENT_BINARY_DIR}/testserviceserver.h
- ${CMAKE_CURRENT_BINARY_DIR}/globalenums.h
- )
- set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/globalenums.h PROPERTIES GENERATED TRUE)
- set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/testserviceserver.h PROPERTIES GENERATED TRUE)
- include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/protobuf ${CMAKE_SOURCE_DIR}/src/grpc)
- if(WIN32)
- #Set path to GTest build libraries
- set(GTEST_BOTH_LIBRARIES "")
- #Set path to GTest include directory
- include_directories(${GTEST_INCLUDE_PATHS} "/")
- endif()
- file(GLOB SOURCES main.cpp
- simpletest.cpp
- serializationtest.cpp
- deserializationtest.cpp
- servertest.cpp
- clienttest.cpp)
- set(testtarget "qtprotobuf_test")
- add_executable(${testtarget} ${SOURCES} ${GENERATED_SOURCES})
- if(WIN32)
- target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib" qtprotobufsupport qtgrpc Qt5::Core)
- elseif(UNIX)
- target_link_libraries(${testtarget} gtest qtgrpc)
- endif()
- add_dependencies(${testtarget} ${testgeneration})
|