parameters: (
      p, spec, primary_input, inputs, outputs, description, cmd
  )
docstring: Add a custom build tool to execute something.
  
    Arguments:
      p: the target project
      spec: the target project dict
      primary_input: input file to attach the build tool to
      inputs: list of inputs
      outputs: list of outputs
      description: description of the action
      cmd: command line to execute
docstring_summary: Add a custom build tool to execute something.
docstring_tokens: Add a custom build tool to execute something .
function: def _AddCustomBuildToolForMSVS(
      p, spec, primary_input, inputs, outputs, description, cmd
  ):
      """Add a custom build tool to execute something.
  
    Arguments:
      p: the target project
      spec: the target project dict
      primary_input: input file to attach the build tool to
      inputs: list of inputs
      outputs: list of outputs
      description: description of the action
      cmd: command line to execute
    """
      inputs = _FixPaths(inputs)
      outputs = _FixPaths(outputs)
      tool = MSVSProject.Tool(
          "VCCustomBuildTool",
          {
              "Description": description,
              "AdditionalDependencies": ";".join(inputs),
              "Outputs": ";".join(outputs),
              "CommandLine": cmd,
          },
      )
      # Add to the properties of primary input for each config.
      for config_name, c_data in spec["configurations"].items():
          p.AddFileConfig(
              _FixPath(primary_input), _ConfigFullName(config_name, c_data), tools=[tool]
          )
function_tokens: def _AddCustomBuildToolForMSVS ( p , spec , primary_input , inputs , outputs , description , cmd ) : inputs = _FixPaths ( inputs ) outputs = _FixPaths ( outputs ) tool = MSVSProject . Tool ( "VCCustomBuildTool" , { "Description" : description , "AdditionalDependencies" : ";" . join ( inputs ) , "Outputs" : ";" . join ( outputs ) , "CommandLine" : cmd , } , ) # Add to the properties of primary input for each config. for config_name , c_data in spec [ "configurations" ] . items ( ) : p . AddFileConfig ( _FixPath ( primary_input ) , _ConfigFullName ( config_name , c_data ) , tools = [ tool ] )