【发布时间】:2011-12-13 07:42:18
【问题描述】:
我正在尝试在我的 C++ 项目中使用 ANTLR。我为指定语法创建了一个运行 ANTLR 生成器的目标,并使 main prjct 依赖于它。
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 以某种方式只为过时的语法生成解析器。
【问题讨论】:
-
我们遇到了这个问题——
add_custom_target总是在重建。不幸的是,目标是在我们无法控制的外部模块中定义的。因此,在这种情况下,使用add_custom_command的解决方案不适用。我正在寻找一种解决方案来控制何时调用目标。