私はC++プロジェクトでANTLRを使用しようとしています。私は、指定された文法のためにANTLRジェネレータを実行するためのターゲットを作り、それに依存してメインprjctを作りました。指定されたファイルが変更されたかどうかCMakeターゲットを実行する方法?
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)
問題は、ANTLRジェネレータがプロジェクトをビルドして十分な時間を消費するたびに発生することです。文法が変更されたかどうかだけをどのように動かすことができますか?あるいは、ANTLRを古くなった文法のためだけにパーサーを生成させることも可能かもしれません。
動作しないようです。私はDEPENDSがターゲットだけで動作することを理解していました。依存ターゲットが変更されるたびに(libary rebuiltなど)コマンドが実行されます。 – DikobrAz