Sto provando ad usare ANTLR nel mio progetto C++. Ho creato un obiettivo per l'esecuzione del generatore ANTLR per la grammatica specificata e ne ha reso il principale prjct dipendente da esso.Come rendere eseguito il target CMake se il file specificato è stato modificato?
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)
Il problema è che il generatore ANTLR è in esecuzione ogni volta che progetto un progetto e consuma abbastanza tempo. Come posso farlo funzionare solo se la mia grammatica è stata modificata? O forse è possibile che ANTLR generi in qualche modo parser solo per grammatica obsoleta.
Sembra non funzionare. Come ho capito, DEPENDS funziona solo con gli obiettivi, ad es. ogni volta che il target dipendente è stato modificato (comando di ricostruzione della libra, ecc.) viene eseguito. – DikobrAz