Skip to content
  • Brad King's avatar
    Ninja: Do not add empty custom command for file(GENERATE) outputs · 0826c201
    Brad King authored
    Internally we mark `file(GENERATE)` outputs as `GENERATED` in order
    to tell custom command dependency tracing logic not to expect the
    files to exist on disk yet.  This is because we do not generate the
    files until after that tracing is done.
    
    The Ninja generator also interprets the `GENERATED` property to mean
    that it is expected that some build rule will generate the file if
    another build rule depends on it.  If the generator does not know of a
    custom command that generates the file then it adds an empty one so that
    the `ninja` build tool does not complain about a dependency on a file
    that does not exist and has no rule to generate it.  However, this step
    is not necessary for `file(GENERATE)` outputs because there is no build
    rule to generate them and they will exist before `ninja` runs.
    
    Add an additional `__CMAKE_GENERATED_BY_CMAKE` property internally to
    tell the Ninja generator that a `GENERATED` file will exist before the
    build starts and is not expected to have a build rule producing it.
    
    Fixes: #17942
    0826c201