diff --git a/cmake/operators.cmake b/cmake/operators.cmake index c9d0f80da2962ee1578af0f6f06f07438898f399..3d8a6aa23e676411093f775ed516e8ece5647580 100644 --- a/cmake/operators.cmake +++ b/cmake/operators.cmake @@ -196,7 +196,7 @@ endfunction() function(register_operators) set(options "") set(oneValueArgs "") - set(multiValueArgs EXCLUDES) + set(multiValueArgs EXCLUDES DEPS) cmake_parse_arguments(register_operators "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -204,11 +204,16 @@ function(register_operators) string(REPLACE "_mkldnn" "" OPS "${OPS}") string(REPLACE ".cc" "" OPS "${OPS}") list(REMOVE_DUPLICATES OPS) + list(LENGTH register_operators_DEPS register_operators_DEPS_len) foreach(src ${OPS}) list(FIND register_operators_EXCLUDES ${src} _index) if (${_index} EQUAL -1) - op_library(${src}) + if (${register_operators_DEPS_len} GREATER 0) + op_library(${src} DEPS ${register_operators_DEPS}) + else() + op_library(${src}) + endif() endif() endforeach() endfunction() diff --git a/paddle/fluid/operators/distributed_ops/CMakeLists.txt b/paddle/fluid/operators/distributed_ops/CMakeLists.txt index a071babc8227d76504b3404532146e3f0692358e..28bb90af5675b2fe14813675ad001c0cf1d71e12 100644 --- a/paddle/fluid/operators/distributed_ops/CMakeLists.txt +++ b/paddle/fluid/operators/distributed_ops/CMakeLists.txt @@ -29,11 +29,11 @@ foreach(src ${OPS}) set_source_files_properties(${src} PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS}) endforeach() -register_operators(EXCLUDES gen_nccl_id_op) +register_operators(EXCLUDES gen_nccl_id_op DEPS ${DISTRIBUTE_DEPS}) if(WITH_GPU AND NOT WIN32) set(DISTRIBUTE_DEPS ${DISTRIBUTE_DEPS} nccl_common) - op_library(gen_nccl_id_op) + op_library(gen_nccl_id_op ${DISTRIBUTE_DEPS} nccl_common) endif() set(OPERATOR_DEPS ${OPERATOR_DEPS} ${DISTRIBUTE_DEPS} PARENT_SCOPE)