include_guard(DIRECTORY) include(${CMAKE_SOURCE_DIR}/cmake/SymLink.cmake) function(sym_link_python_module) set(_options) set(_one_value_args LIB_NAME MODULE_NAME PLUGIN_NAME) set(_multi_value_args) cmake_parse_arguments(_ARGS "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN}) if(NOT DEFINED _ARGS_LIB_NAME) message( FATAL_ERROR "LIB_NAME must be specified for sym_link_python_module()") endif() set(_lib_name ${_ARGS_LIB_NAME}) set(_module_name ${_ARGS_MODULE_NAME}) if(NOT DEFINED _ARGS_MODULE_NAME) set(_module_name ${_lib_name}_module) endif() set(_plugin_name ${_ARGS_PLUGIN_NAME}) set(_deps ${_lib_name} ${_module_name}) if(DEFINED _ARGS_PLUGIN_NAME) list(APPEND _deps ${_plugin_name} copy_${_plugin_name}) endif() add_dependencies(${PROJECT_NAME} ${_deps}) sym_link_local_lib(${_lib_name}) set(_module_suffix cpython-310-x86_64-linux-gnu.so) sym_link_file( SOURCE ${CMAKE_BINARY_DIR}/src/lib_${_lib_name}/${_module_name}.${_module_suffix} DEST ${CMAKE_CURRENT_BINARY_DIR}/${_module_name}.${_module_suffix} INSTALL_DEST ${CMAKE_INSTALL_BINDIR}/) if(DEFINED _ARGS_PLUGIN_NAME) get_target_property(plugins ${_plugin_name} INTERFACE_PYTHON_SCRIPTS_DIR) sym_link_dir(TARGET_NAME ${PROJECT_NAME}_link_${_plugin_name} SOURCE ${plugins} DEST ${CMAKE_CURRENT_BINARY_DIR}/${_plugin_name}) endif() endfunction()