cmake_minimum_required(VERSION 3.16) project(DRDcmtkServer C CXX) include("common.cmake") get_filename_component(dcmtk_proto "rpc_idl/dr_dcmtk_idl.proto" ABSOLUTE) get_filename_component(dcmtk_proto_path "${dcmtk_proto}" PATH) set(dcmtk_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.pb.cc") set(dcmtk_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.pb.h") set(dcmtk_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.grpc.pb.cc") set(dcmtk_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/dr_dcmtk_idl.grpc.pb.h") add_custom_command( OUTPUT "${dcmtk_proto_srcs}" "${dcmtk_proto_hdrs}" "${dcmtk_grpc_srcs}" "${dcmtk_grpc_hdrs}" COMMAND ${_PROTOBUF_PROTOC} ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}" --cpp_out "${CMAKE_CURRENT_BINARY_DIR}" -I "${dcmtk_proto_path}" --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}" "${dcmtk_proto}" DEPENDS "${dcmtk_proto}") find_package(DCMTK REQUIRED) include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/serivce" "${CMAKE_CURRENT_BINARY_DIR}" "${DCMTK_INCLUDE_DIRS}" ) add_library(dcmtk_grpc_proto ${dcmtk_grpc_srcs} ${dcmtk_grpc_hdrs} ${dcmtk_proto_srcs} ${dcmtk_proto_hdrs}) target_link_libraries(dcmtk_grpc_proto absl::check ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF}) add_executable(dcmtk-server "main.cc" "service/pb_basic.cc" "service/pb_dcm.cc") target_link_libraries(dcmtk-server dcmtk_grpc_proto absl::check absl::flags absl::flags_parse absl::log absl::log_initialize ${_REFLECTION} ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF} ${DCMTK_LIBRARIES})