docs: def cpp_app_builder(build_context, target):
      """Pack a C++ binary as a Docker image with its runtime dependencies.
  
      TODO(itamar): Dynamically analyze the binary and copy shared objects
      from its buildenv image to the runtime image, unless they're installed.
      """
      yprint(build_context.conf, 'Build CppApp', target)
      if target.props.executable and target.props.main:
          raise KeyError(
              '`main` and `executable` arguments are mutually exclusive')
      if target.props.executable:
          if target.props.executable not in target.artifacts.get(AT.app):
              target.artifacts.add(AT.app, target.props.executable)
          entrypoint = [target.props.executable]
      elif target.props.main:
          prog = build_context.targets[target.props.main]
          binary = list(prog.artifacts.get(AT.binary).keys())[0]
          entrypoint = ['/usr/src/bin/' + binary]
      else:
          raise KeyError('Must specify either `main` or `executable` argument')
      build_app_docker_and_bin(
          build_context, target, entrypoint=entrypoint)