Como gerar um cabeçalho na fonte com cmake?

No meu projeto, tenho um arquivo "schema" e um utilitário que escrevi para gerar um arquivo de cabeçalho. Estou usando o cmake e a compilação fora da fonte para criar o aplicativo.

Atualmente eu tenho que regenerar o arquivo de cabeçalho manualmente e depois construir o aplicativo.

Então, eu vim com essas instruções CMakeLists.txt, mas elas geram o cabeçalho no diretório de construção em vez de no diretório de origem.

configure_file( generator.pl generator COPYONLY )
configure_file( schema.txt.in schema.txt COPYONLY )
add_custom_command(
    OUTPUT generated.h
    COMMAND ./generator schema.txt generated.h
    DEPENDS mib_schema.txt.in generator.pl
    COMMENT "Regenerating header file..."
)

É possível gerar o cabeçalho no diretório de origem?

editar (para refletir a resposta):

O arquivo pode ser acessado diretamente, qualificando totalmente o caminho com

${CMAKE_CURRENT_SOURCE_DIR}

ou:

${CMAKE_CURRENT_BINARY_DIR}

Portanto, para gerar o cabeçalho no meu diretório de origem, o trecho anterior de CMakeLists.txt se torna:

add_custom_command(
    OUTPUT generated.h
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
    DEPENDS mib_schema.txt.in generator.pl
    COMMENT "Regenerating header file..."
)

o que é realmente mais simples. obrigado

--para

questionAnswers(1)

yourAnswerToTheQuestion