code: def run(self):
      if not self.libraries:
          return
  
      # Yech -- this is cut 'n pasted from build_ext.py!
      from ..ccompiler import new_compiler
  
      self.compiler = new_compiler(
          compiler=self.compiler, dry_run=self.dry_run, force=self.force
      )
      customize_compiler(self.compiler)
  
      if self.include_dirs is not None:
          self.compiler.set_include_dirs(self.include_dirs)
      if self.define is not None:
          # 'define' option is a list of (name,value) tuples
          for name, value in self.define:
              self.compiler.define_macro(name, value)
      if self.undef is not None:
          for macro in self.undef:
              self.compiler.undefine_macro(macro)
  
      self.build_libraries(self.libraries)
  
file_path: catboost/contrib/python/setuptools/py3/setuptools/_distutils/command/build_clib.py
imports: import os
  from ..core import Command
  from ..errors import DistutilsSetupError
  from ..sysconfig import customize_compiler
  from distutils._log import log
label_desc: Use image node_id 3 for calling the build_clib obj's underlying member method code with example usage: obj.run() without return types