Nel mio progetto ho un file "schema" e un'utilità che ho scritto per generare un file di intestazione. Sto usando cmake e la build di origine per creare l'applicazione.Come generare un'intestazione nella sorgente con cmake?
Attualmente devo rigenerare manualmente il file di intestazione quindi creare l'applicazione.
Quindi ho trovato queste istruzioni CMakeLists.txt, ma esse generano l'intestazione nella directory di build anziché nella directory di origine.
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..."
)
È possibile generare l'intestazione nella directory di origine?
di modifica (in modo da riflettere la risposta):
Il file può essere raggiunto direttamente da qualificare pienamente il suo percorso sia con
${CMAKE_CURRENT_SOURCE_DIR}
o:
${CMAKE_CURRENT_BINARY_DIR}
Così, per generare l'intestazione nella mia directory di origine, l'estratto precedente da CMakeLists.txt diventa:
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..."
)
che è in realtà più semplice. Grazie
--to
Questo è in realtà una buona idea. Se posso salvare il file generato nella directory sorgente, viene incluso nel pacchetto sorgente che è esattamente quello che voglio (perché in questo modo gli utenti della mia libreria non hanno bisogno di generare il file finché non modificano il generatore e/o il file di dati di origine). Ciò significa che più persone possono compilare la mia libreria! –