如何将flex和bison与Qt项目集成?

时间:2013-01-19 08:14:55

标签: c++ qt qt4 bison flex-lexer

我在git源代码控制(Github page)下使用Qt4制作GUI程序。项目的一小部分需要扫描和解析。所以我想在项目中使用flex和bison。我可以想到3种方式 -

  1. 保持flex和bison文件不受项目和源代码控制。生成C源文件并将其添加到项目中。
  2. 将flex和bison文件添加到项目中,但分别运行flex和bison命令。
  3. 与IDE(Ubuntu 12.04上的Qt Creator)和源代码控制正确集成,以便在构建flex和bison时调用生成词法分析器和解析器。
  4. 我显然想要第三种选择,但不知道该怎么做。

    请建议最佳选择和方法。或者还有其他方法可以做到吗?

    注意 - 我希望项目是跨平台的,也可以为Windows构建。

2 个答案:

答案 0 :(得分:3)

通过关注@ Bort评论中的链接,我能够很好地将Flex和Bison与我的Qt项目集成。我在项目设置中添加了自定义构建步骤。以下是Qt Creator中的屏幕截图。

enter image description here

我问了一个相关的问题 - Undefined reference error even though the functions are present

答案 1 :(得分:1)

我在他的回答中找不到 Qt Creator 配置页面 @VinayakGarg 引用。

一种解决方案(来自 here)是直接编辑 .pro 文件。这对我有用。

### For building the gnu flex part
FLEXSOURCES += my_lex_sourcefile.l
flex.input = FLEXSOURCES
flex.output = ${QMAKE_FILE_BASE}.c
flex.commands = flex  -o ${QMAKE_FILE_IN_BASE}.c ${QMAKE_FILE_IN}
flex.variable_out = SOURCES
flex.CONFIG += target_predeps
flex.clean =  ${QMAKE_FILE_IN_BASE}.c
flex.name = flex
# finally add this to the qmake project so it will have the makefile generated
QMAKE_EXTRA_COMPILERS += flex

其中(显然)my_lex_sourcefile.l 是您的 flex-input 文件名。

应在 flex.commands 行中添加任何额外的命令行选项。

参考:https://jonmacey.blogspot.com/2012/03/using-flex-with-qt.html