CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:2 \(add_library\):
  Policy CMP0037 is not set: Target names should not be reserved and should
  match a validity pattern.  Run "cmake --help-policy CMP0037" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  The target name "all" is reserved or not valid for certain CMake features,
  such as generator expressions, and may result in undefined behavior.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)
This warning is for project developers.  Use -Wno-dev to suppress it.
+
CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:3 \(add_executable\):
  Policy CMP0037 is not set: Target names should not be reserved and should
  match a validity pattern.  Run "cmake --help-policy CMP0037" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  The target name "clean" is reserved or not valid for certain CMake
  features, such as generator expressions, and may result in undefined
  behavior.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)
This warning is for project developers.  Use -Wno-dev to suppress it.
+
CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:4 \(add_custom_target\):
  Policy CMP0037 is not set: Target names should not be reserved and should
  match a validity pattern.  Run "cmake --help-policy CMP0037" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  The target name "help" is reserved or not valid for certain CMake features,
  such as generator expressions, and may result in undefined behavior.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)
This warning is for project developers.  Use -Wno-dev to suppress it.
