Próbuję użyć ANTLR w moim projekcie C++. Zrobiłem cel dla uruchomienia generatora ANTLR dla określonej gramatyki i uzależniłem od niego główny element.Jak wykonać cel CMake, czy określony plik został zmieniony?
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)
Problem polega na tym, że generator ANTLR działa za każdym razem, gdy buduję projekt i zużywa wystarczającą ilość czasu. Jak mogę go uruchomić tylko, czy moja gramatyka została zmieniona? Lub może być możliwe, aby ANTLR w jakiś sposób wygenerował parser tylko dla nieaktualnej gramatyki.
Wydaje się nie działać. Jak rozumiem, DEPENDS działają tylko z celami, np. za każdym razem, gdy zmieniono obiekt zależny (odbudowano bibliotekę itd.), wykonywane jest polecenie. – DikobrAz