CMake Error at BadOutput.cmake:3 \(add_custom_command\):
  OUTPUT containing a "<" is not allowed.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)


CMake Error at BadOutput.cmake:4 \(add_custom_command\):
  OUTPUT containing a ">" is not allowed.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

(
CMake Error at BadOutput.cmake:5 \(add_custom_command\):
  OUTPUT containing a ">" is not allowed.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

)+
CMake Error at BadOutput.cmake:6 \(add_custom_command\):
  OUTPUT path

    .*RunCMake/add_custom_command/e

  in a source directory as an output of custom command.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

(
CMake Error at BadOutput.cmake:7 \(add_custom_command\):
  Error evaluating generator expression:

    \$<TARGET_PROPERTY:prop>

  \$<TARGET_PROPERTY:prop> may only be used with binary targets.  It may not
  be used with add_custom_command or add_custom_target.  Specify the target
  to read a property from using the \$<TARGET_PROPERTY:tgt,prop> signature
  instead.
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

)+(
CMake Error at BadOutput.cmake:8 \(add_custom_command\):
  Error evaluating generator expression:

    \$<OUTPUT_CONFIG:h>

  Expression did not evaluate to a known generator expression
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

)+(
CMake Error at BadOutput.cmake:9 \(add_custom_command\):
  Error evaluating generator expression:

    \$<COMMAND_CONFIG:i>

  Expression did not evaluate to a known generator expression
Call Stack \(most recent call first\):
  CMakeLists.txt:3 \(include\)

)+
