如何使用 cmake 运行 grpc python 文件的协议?

How to run protoc for grpc python files using cmake?

我有一个文件 my.proto,我想使用 cmake 创建相应的 my_pb2.pymy_pb2_grpc.py 文件。 (不幸的是,我不能使用其他构建系统)

通常,我使用 grpcio-tools python 模块中的 protoc 来这样做:

python3 -m grpc_tools.protoc -I. --grpc_python_out=. --python_out=. my.proto

cmake 为 python protobuf 提供了 some support,但对于我的用例来说实现它还不清楚。
我的问题是:

根据@Tsyvarev 评论并进一步阅读 cmake 文档,我得到了以下 CMakeLists.txt 内容(位于 my.proto 目录中)

# files generated by protoc
set ( PROTO_PY ${CMAKE_CURRENT_LIST_DIR}/my_pb2.py ${CMAKE_CURRENT_LIST_DIR}/my_pb2_grpc.py )

# compile dpe.proto
add_custom_command (
    OUTPUT ${PROTO_PY}
    COMMAND python3 -m grpc_tools.protoc -I${CMAKE_CURRENT_LIST_DIR} --grpc_python_out=${CMAKE_CURRENT_LIST_DIR} --python_out=${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/my.proto
)

# invoke custom command
add_custom_target ( proto_py ALL
                    DEPENDS ${PROTO_PY} )

install( PROGRAMS ${PROTO_PY} COMPONENT mycomponent DESTINATION mypath )