1# Welcome to `include/grpcpp/impl/codegen`
2
3## Why is this directory here?
4
5This directory exists so that generated code can include selected files upon
6which it depends without having to depend on the entire gRPC C++ library. This
7is particularly relevant for users of bazel, particularly if they use the
8multi-lingual `proto_library` target type. Generated code that uses this target
9only depends on the gRPC C++ targets associated with these header files, not the
10entire gRPC C++ codebase since that would make the build time of these types of
11targets excessively large (particularly when they are not even C++ specific).
12
13## What should user code do?
14
15User code should *not* include anything from this directory. Only generated code
16and gRPC library code should include contents from this directory. User code
17should instead include contents from the main `grpcpp` directory or its
18accessible subcomponents like `grpcpp/support`. It is possible that we may
19remove this directory altogether if the motivations for its existence are no
20longer strong enough (e.g., if most users migrate away from the `proto_library`
21target type or if the additional overhead of depending on gRPC C++ is not high).
22