CMakeLists.txt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. find_package(GTest)
  2. if (UNIX AND NOT GTest_FOUND)
  3. # FIXME: if protobuf was downloaded then the following include is not more needed
  4. include(../cmake/DownloadProject.cmake)
  5. download_project(PROJ GTest
  6. GIT_REPOSITORY https://github.com/google/googletest.git
  7. GIT_TAG v1.8.x
  8. )
  9. # uncomment if gmock is going to be needed
  10. set(BUILD_GMOCK OFF CACHE BOOL "Disable gmock build functionality" FORCE)
  11. add_subdirectory(${GTest_SOURCE_DIR} ${GTest_BINARY_DIR})
  12. endif()
  13. find_package(Qt5 COMPONENTS Core REQUIRED)
  14. include_directories(${Qt5Core_INCLUDE_DIRS})
  15. set(CMAKE_INCLUDE_CURRENT_DIR OFF)
  16. set(CMAKE_AUTOMOC OFF)
  17. set(CMAKE_AUTORCC ON)
  18. if(Qt5_POSITION_INDEPENDENT_CODE)
  19. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  20. endif()
  21. file(GLOB GENERATED_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/*.h)
  22. file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/*.cpp)
  23. #Manual moc_ files generation for qt
  24. list(FILTER GENERATED_SOURCES EXCLUDE REGEX "moc_.*cpp")
  25. QT5_WRAP_CPP(MOC_SOURCES ${GENERATED_HEADERS})
  26. include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/protobuf ${CMAKE_SOURCE_DIR}/src/grpc)
  27. if(WIN32)
  28. #Set path to GTest build libraries
  29. set(GTEST_BOTH_LIBRARIES "")
  30. #Set path to GTest include directory
  31. include_directories(${GTEST_INCLUDE_PATHS} "/")
  32. elseif(UNIX)
  33. include_directories(${GTEST_INCLUDE_DIRS})
  34. endif()
  35. file(GLOB HEADERS ${TESTS_OUT_DIR}/*.h)
  36. file(GLOB SOURCES main.cpp
  37. simpletest.cpp
  38. serializationtest.cpp
  39. deserializationtest.cpp
  40. servertest.cpp
  41. clienttest.cpp)
  42. file(GLOB PROTOS proto/*.proto)
  43. set(testtarget "qtprotobuf_test")
  44. add_executable(${testtarget} ${SOURCES} ${MOC_SOURCES} ${GENERATED_SOURCES} ${PROTOS})
  45. if(WIN32)
  46. target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib" qtprotobufsupport qtgrpc Qt5::Core)
  47. elseif(UNIX)
  48. target_link_libraries(${testtarget} gtest qtprotobufsupport qtgrpc Qt5::Core)
  49. endif()
  50. add_dependencies(${testtarget} ${testgeneration})