CMakeLists.txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. set(testtarget "qtprotobuf_test")
  2. if (WIN32)
  3. find_package(GTest)
  4. elseif (UNIX)
  5. find_package(GTest)
  6. if (NOT GTest_FOUND)
  7. message(STATUS "Gtest not found. Start downloading...")
  8. include(../cmake/DownloadProject.cmake)
  9. set(UPDATE_DISCONNECTED_IF_AVAILABLE "")
  10. download_project(PROJ GTest
  11. GIT_REPOSITORY https://github.com/google/googletest.git
  12. GIT_TAG v1.8.x
  13. ${UPDATE_DISCONNECTED_IF_AVAILABLE}
  14. )
  15. add_subdirectory(${GTest_SOURCE_DIR} ${GTest_BINARY_DIR})
  16. endif()
  17. endif()
  18. find_package(Qt5 COMPONENTS Core REQUIRED)
  19. include_directories(${Qt5Core_INCLUDE_DIRS})
  20. set(CMAKE_INCLUDE_CURRENT_DIR OFF)
  21. set(CMAKE_AUTOMOC OFF)
  22. set(CMAKE_AUTORCC ON)
  23. set(CMAKE_CXX_STANDARD 14)
  24. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  25. if (Qt5_POSITION_INDEPENDENT_CODE)
  26. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  27. endif()
  28. file(GLOB GENERATED_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/*.h)
  29. file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/*.cpp)
  30. #Manual moc_ files generation for qt
  31. list(FILTER GENERATED_SOURCES EXCLUDE REGEX "moc_.*cpp")
  32. QT5_WRAP_CPP(MOC_SOURCES ${GENERATED_HEADERS})
  33. if (WIN32)
  34. #Set path to GTest build libraries
  35. set(GTEST_BOTH_LIBRARIES "")
  36. #Set path to GTest include directory
  37. include_directories(${GTEST_INCLUDE_PATHS} "/")
  38. #Need for generated code
  39. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  40. elseif (UNIX)
  41. include_directories(${GTEST_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src/lib)
  42. endif()
  43. file(GLOB HEADERS ${TESTS_OUT_DIR})
  44. file(GLOB SOURCES main.cpp
  45. simpletest.cpp
  46. serializationtest.cpp
  47. deserializationtest.cpp
  48. servertest.cpp)
  49. file(GLOB PROTOS proto/*.proto)
  50. add_executable(${testtarget} ${SOURCES} ${MOC_SOURCES} ${GENERATED_SOURCES} ${PROTOS})
  51. if (WIN32)
  52. target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib" Qt5::Core)
  53. elseif (UNIX)
  54. target_link_libraries(${testtarget} gtest qtprotobufsupport Qt5::Core)
  55. endif()
  56. add_dependencies(${testtarget} ${testgeneration})