CMakeLists.txt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. cmake_minimum_required(VERSION 3.16)
  2. project(DRDcmtkServer C CXX)
  3. include("common.cmake")
  4. get_filename_component(dcmtk_proto "rpc_idl/dr_dcmtk_idl.proto" ABSOLUTE)
  5. get_filename_component(dcmtk_proto_path "${dcmtk_proto}" PATH)
  6. set(dcmtk_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.pb.cc")
  7. set(dcmtk_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.pb.h")
  8. set(dcmtk_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.grpc.pb.cc")
  9. set(dcmtk_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.grpc.pb.h")
  10. add_custom_command(
  11. OUTPUT "${dcmtk_proto_srcs}" "${dcmtk_proto_hdrs}" "${dcmtk_grpc_srcs}" "${dcmtk_grpc_hdrs}"
  12. COMMAND ${_PROTOBUF_PROTOC}
  13. ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"
  14. --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"
  15. -I "${dcmtk_proto_path}"
  16. --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}"
  17. "${dcmtk_proto}"
  18. DEPENDS "${dcmtk_proto}")
  19. find_package(DCMTK REQUIRED)
  20. include_directories(
  21. "${CMAKE_CURRENT_SOURCE_DIR}/serivce"
  22. "${CMAKE_CURRENT_BINARY_DIR}"
  23. "${DCMTK_INCLUDE_DIRS}"
  24. )
  25. add_library(dcmtk_grpc_proto
  26. ${dcmtk_grpc_srcs}
  27. ${dcmtk_grpc_hdrs}
  28. ${dcmtk_proto_srcs}
  29. ${dcmtk_proto_hdrs})
  30. target_link_libraries(dcmtk_grpc_proto
  31. absl::check
  32. ${_REFLECTION}
  33. ${_GRPC_GRPCPP}
  34. ${_PROTOBUF_LIBPROTOBUF})
  35. add_executable(dcmtk-server "main.cc" "service/pb_basic.cc" "service/pb_dcm.cc")
  36. target_link_libraries(dcmtk-server
  37. dcmtk_grpc_proto
  38. absl::check
  39. absl::flags
  40. absl::flags_parse
  41. absl::log
  42. absl::log_initialize
  43. ${_REFLECTION}
  44. ${_GRPC_GRPCPP}
  45. ${_PROTOBUF_LIBPROTOBUF}
  46. ${DCMTK_LIBRARIES})