CMakeLists.txt 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. cmake_minimum_required(VERSION 3.0)
  2. project(qtprotobuf)
  3. find_package(Protobuf)
  4. if (NOT Protobuf_FOUND)
  5. include(cmake/DownloadProject.cmake)
  6. download_project(PROJ Protobuf
  7. GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
  8. GIT_TAG 3.7.x
  9. )
  10. set(protobuf_BUILD_TESTS OFF CACHE BOOL "Disable protobuf tests build" FORCE)
  11. add_subdirectory("${Protobuf_SOURCE_DIR}/cmake" ${Protobuf_BINARY_DIR})
  12. endif()
  13. include(cmake/ProjectDefinitions.cmake)
  14. if(DEFINED $ENV{MAKE_TESTS})
  15. set(MAKE_TESTS ${MAKE_TESTS})
  16. elseif(NOT DEFINED MAKE_TESTS)
  17. set(MAKE_TESTS ON)
  18. endif()
  19. add_executable(${PROJECT_NAME}
  20. src/generator/main.cpp
  21. src/generator/generator.cpp
  22. src/generator/classgeneratorbase.cpp
  23. src/generator/servergenerator.cpp
  24. src/generator/protobufclassgenerator.cpp
  25. src/generator/globalenumsgenerator.cpp
  26. src/generator/servicegeneratorbase.cpp
  27. src/generator/templates.cpp
  28. )
  29. if(WIN32)
  30. #Needs to set path to protobuf libraries
  31. set(PROTOBUF_INSTALATION_PATH "")
  32. include_directories(${PROTOBUF_INSTALATION_PATH}/include)
  33. set(PROTOBUF_LIBRARIES_PATH ${PROTOBUF_INSTALATION_PATH}/lib)
  34. target_link_libraries(${PROJECT_NAME} "${PROTOBUF_LIBRARIES_PATH}/libprotobuf.lib")
  35. target_link_libraries(${PROJECT_NAME} "${PROTOBUF_LIBRARIES_PATH}/libprotoc.lib")
  36. elseif (UNIX)
  37. target_link_libraries(${PROJECT_NAME} libprotoc)
  38. endif()
  39. add_subdirectory("src/lib")
  40. if(MAKE_TESTS)
  41. set(testgeneration "test_generation")
  42. set(TESTS_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/tests)
  43. file(MAKE_DIRECTORY ${TESTS_OUT_DIR})
  44. add_custom_target(${testgeneration})
  45. file(GLOB PROTO_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/*.proto)
  46. if(WIN32)
  47. include_directories("src/lib")
  48. add_custom_command(TARGET ${testgeneration} POST_BUILD
  49. COMMAND ${PROTOBUF_INSTALATION_PATH}/bin/protoc.exe --plugin=protoc-gen-${PROJECT_NAME}=${CMAKE_BINARY_DIR}/qtprotobuf.exe --qtprotobuf_out=${CMAKE_CURRENT_BINARY_DIR}/tests
  50. ${PROTO_FILES}
  51. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
  52. COMMENT "Generating test headers"
  53. )
  54. elseif(UNIX)
  55. add_custom_command(TARGET ${testgeneration} POST_BUILD
  56. COMMAND protoc --plugin=protoc-gen-${PROJECT_NAME}=${CMAKE_BINARY_DIR}/qtprotobuf --qtprotobuf_out=${CMAKE_CURRENT_BINARY_DIR}/tests
  57. ${PROTO_FILES}
  58. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests/proto/
  59. COMMENT "Generating test headers"
  60. )
  61. endif()
  62. add_dependencies(${testgeneration} ${PROJECT_NAME})
  63. add_subdirectory("tests")
  64. endif()
  65. install(TARGETS ${PROJECT_NAME}
  66. RUNTIME DESTINATION bin)