diff --git a/cmake/external_libs/protobuf.cmake b/cmake/external_libs/protobuf.cmake index 7697c0de72b..13acc13cd23 100644 --- a/cmake/external_libs/protobuf.cmake +++ b/cmake/external_libs/protobuf.cmake @@ -61,6 +61,7 @@ mindspore_add_pkg(protobuf PATCHES ${PROTOBUF_PATCH_ROOT}/CVE-2021-22570.patch) include_directories(${protobuf_INC}) +include_directories(${CMAKE_BINARY_DIR}/proto_py) add_library(mindspore::protobuf ALIAS protobuf::protobuf) set(CMAKE_CXX_FLAGS ${_ms_tmp_CMAKE_CXX_FLAGS}) if(MSVC) @@ -119,38 +120,36 @@ function(ms_protobuf_generate_py c_var h_var py_var) get_filename_component(file_name ${file} NAME_WE) get_filename_component(file_dir ${abs_file} PATH) - list(APPEND ${c_var} "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.cc") - list(APPEND ${h_var} "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.h") - list(APPEND ${py_var} "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py") + list(APPEND ${c_var} "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.cc") + list(APPEND ${h_var} "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.h") + list(APPEND ${py_var} "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py") if(WIN32) add_custom_command( - OUTPUT "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.cc" - "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.h" - "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" + OUTPUT "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.cc" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.h" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto" - COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto ${abs_file} - COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto ${abs_file} - COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto ${abs_file} + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto_py/proto" + COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto_py/proto ${abs_file} + COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto_py/proto ${abs_file} COMMAND perl -pi.bak -e "s/import (.+_pb2.*)/from . import \\1/" - "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" "${PROJECT_SOURCE_DIR}/mindspore/python/mindspore/train/" DEPENDS protobuf::protoc ${abs_file} COMMENT "Running C++ protocol buffer compiler on ${file}" VERBATIM) else() add_custom_command( - OUTPUT "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.cc" - "${CMAKE_BINARY_DIR}/proto/${file_name}.pb.h" - "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" + OUTPUT "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.cc" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}.pb.h" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto" - COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto ${abs_file} - COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto ${abs_file} - COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto ${abs_file} + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/proto_py/proto" + COMMAND protobuf::protoc -I${file_dir} --cpp_out=${CMAKE_BINARY_DIR}/proto_py/proto ${abs_file} + COMMAND protobuf::protoc -I${file_dir} --python_out=${CMAKE_BINARY_DIR}/proto_py/proto ${abs_file} COMMAND perl -pi -e "s/import (.+_pb2.*)/from . import \\1/" - "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" - COMMAND cp "${CMAKE_BINARY_DIR}/proto/${file_name}_pb2.py" + "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" + COMMAND cp "${CMAKE_BINARY_DIR}/proto_py/proto/${file_name}_pb2.py" "${PROJECT_SOURCE_DIR}/mindspore/python/mindspore/train/" DEPENDS protobuf::protoc ${abs_file} COMMENT "Running C++ protocol buffer compiler on ${file}" VERBATIM)