docs: def build_cpp(build_context, target, compiler_config, workspace_dir):
      """Compile and link a C++ binary for `target`."""
      rmtree(workspace_dir)
      binary = join(*split(target.name))
      objects = link_cpp_artifacts(build_context, target, workspace_dir, True)
      buildenv_workspace = build_context.conf.host_to_buildenv_path(
          workspace_dir)
      objects.extend(compile_cc(
          build_context, compiler_config, target.props.in_buildenv,
          get_source_files(target, build_context), workspace_dir,
          buildenv_workspace, target.props.cmd_env))
      bin_file = join(buildenv_workspace, binary)
      link_cmd = (
          [compiler_config.linker, '-o', bin_file] +
          objects + compiler_config.link_flags)
      build_context.run_in_buildenv(
          target.props.in_buildenv, link_cmd, target.props.cmd_env)
      target.artifacts.add(AT.binary, relpath(join(workspace_dir, binary),
                           build_context.conf.project_root), binary)