Try to find GNU gperf.

If the gperf executable is not in your PATH, you can provide an alternative name or full path location with the Gperf_EXECUTABLE variable.

This will define the following variables:


True if gperf is available.


The gperf executable.


The gperf version. (since 5.85)

If Gperf_FOUND is TRUE, it will also define the following imported target:


The gperf executable.

and the following public function:

ecm_gperf_generate(<GperfInput> <OutputFile> <OutputVariable(|target (since 5.83))>
                   [GENERATION_FLAGS <flags>])

Run gperf on <GperfInput> to generate <OutputFile>, adding it to the <OutputVariable> variable which contains the source for the target where <OutputFile> is going to be built or, since KF 5.83, if the given argument is a target, to the list of private sources of that target. The target must not be an alias. The optional GENERATION_FLAGS argument is needed to pass extra parameters to gperf (note you cannot override that way the output file).

A simple invocation would be:

ecm_gperf_generate(simple.gperf ${CMAKE_CURRENT_BINARY_DIR}/simple.h MySources)

Since 5.35.0.