anchor.diff:  == Packaging and publishing
   
   How you package and potentially publish your C++ project varies greatly in the native world.
  -Gradle comes with defaults but custom packaging can be implemented without any issues.
  -
  - * For application, Gradle support installing all dependencies (shared library) and the executable with run script that configure everything properly.
  - * Executable can also be published inside maven repositories
  - * Shared and static libraries are published inside maven repositories together with a zip of their headers
  +Gradle comes with defaults, but custom packaging can be implemented without any issues.
  +
  + * Executable files are published directly to Maven repositories.
  + * Shared and static library files are published directly to Maven repositories along with a zip of the public headers.
  + * For applications, Gradle also supports installing and running the executable with all of its shared library dependencies in a known location.
   
   [[sec:cleaning_cpp_build]]
   == Cleaning the build
   
  -The C++ Application and Library Plugin adds a `clean` task to you project by virtue of applying the Lifecycle Base Plugin.
  +The C++ Application and Library Plugins add a `clean` task to you project by using the <<base_plugin,base plugin>>.
   This task simply deletes everything in the `$buildDir` directory, hence why you should always put files generated by the build in there.
   The task is an instance of Delete and you can change what directory it deletes by setting its `dir` property.
   
  
positive.code: 
  1. Put your source code under the _src/main/cpp_ directory
  2. Declare your compile dependencies in the `implementation` configurations (see the previous section)
  3. Run the `linkDebug` or `linkRelease` task for executables and shared libraries or the `createDebug` or `createRelease` task for static libraries
  
  Other C++ language plugins follow the same pattern of conventions.
  We recommend that you follow these conventions wherever possible, but you don’t have to.
  There are several options for customization, as you’ll see next.
  
  NOTE: All link:{groovyDslPath}/org.gradle.language.cpp.tasks.CppCompile.html[CppCompile] tasks are incremental and cacheable.
  
  [[sec:cpp_supported_tool_chain]]
  === Supported tool chain
  
negative.code: == Declaring your source files
  
  // TODO: Add DSL link to application and library script block
  Gradle’s C++ support uses a `ConfigurableFileCollection` directly from the `application` or `library` script block to configure the set of sources to compile.
  
  Libraries make a distinction between private (implementation details) and public (exported to consumer) headers. 
  
  You can also configure sources for each binary build for those cases where sources are compiled only on certain target machines.
  
  .Sources and C++ compilation
  