CMakeLists.txt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. set(testgeneration "test_generation")
  2. set(TESTS_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
  3. file(MAKE_DIRECTORY ${TESTS_OUT_DIR})
  4. file(GLOB PROTO_FILES ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/proto/*.proto)
  5. # test sources generation
  6. if(WIN32)
  7. set(Protobuf_PROTOC_EXECUTABLE ${PROTOBUF_INSTALATION_PATH}/bin/protoc.exe)
  8. endif()
  9. add_custom_target(${testgeneration})
  10. add_custom_command(TARGET ${testgeneration}
  11. 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}
  12. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/proto/
  13. DEPENDS ${PROJECT_NAME} ${PROTO_FILES}
  14. COMMENT "Generating test headers"
  15. )
  16. add_dependencies(${testgeneration} ${PROJECT_NAME})
  17. # test sources build
  18. set(CMAKE_INCLUDE_CURRENT_DIR OFF)
  19. set(CMAKE_AUTOMOC OFF)
  20. set(CMAKE_AUTORCC ON)
  21. if(Qt5_POSITION_INDEPENDENT_CODE)
  22. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  23. endif()
  24. file(GLOB GENERATED_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/*.h)
  25. file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/*.cpp)
  26. #Manual moc_ files generation for qt
  27. list(FILTER GENERATED_SOURCES EXCLUDE REGEX "moc_.*cpp")
  28. QT5_WRAP_CPP(MOC_SOURCES ${GENERATED_HEADERS})
  29. include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/protobuf ${CMAKE_SOURCE_DIR}/src/grpc)
  30. if(WIN32)
  31. #Set path to GTest build libraries
  32. set(GTEST_BOTH_LIBRARIES "")
  33. #Set path to GTest include directory
  34. include_directories(${GTEST_INCLUDE_PATHS} "/")
  35. endif()
  36. file(GLOB SOURCES main.cpp
  37. simpletest.cpp
  38. serializationtest.cpp
  39. deserializationtest.cpp
  40. servertest.cpp
  41. clienttest.cpp)
  42. set(testtarget "qtprotobuf_test")
  43. add_executable(${testtarget} ${SOURCES} ${MOC_SOURCES} ${GENERATED_SOURCES})
  44. if(WIN32)
  45. target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib" qtprotobufsupport qtgrpc Qt5::Core)
  46. elseif(UNIX)
  47. target_link_libraries(${testtarget} gtest qtgrpc)
  48. endif()
  49. add_dependencies(${testtarget} ${testgeneration})