Estoy tratando de usar ANTLR en mi proyecto C++. Hice un objetivo para ejecutar el generador de ANTLR para la gramática especificada e hice el producto principal dependiente de él.¿Cómo se puede ejecutar el objetivo CMake si se modificó el archivo especificado?
ADD_CUSTOM_TARGET(GenerateParser
COMMAND ${ANTLR_COMMAND} ${PROJECT_SOURCE_DIR}/src/MyGrammar.g
-o ${PROJECT_SOURCE_DIR}/src/MyGrammar
)
ADD_LIBRARY(MainProject ${LIBRARY_TYPE} ${TARGET_SOURCES} ${TARGET_OPTIONS})
ADD_DEPENDENCIES(MainProject GenerateParser)
El problema es que el generador ANTLR se ejecuta cada vez que construyo un proyecto y consume el tiempo suficiente. ¿Cómo puedo hacer que funcione solo si mi gramática ha sido modificada? O puede ser que sea posible hacer que ANTLR de alguna manera genere el analizador solo para la gramática desactualizada.
Parece que no funciona. Como entendí, DEPENDS solo trabaja con objetivos, p. cada vez que se modifica el objetivo dependiente (se reconstruye la biblioteca, etc.) se ejecuta el comando. – DikobrAz