5

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

  1. 将 flex 和 bison 文件排除在项目和源代码控制之外。生成 C 源文件并将其添加到项目中。
  2. 将 flex 和 bison 文件添加到项目中,但单独运行 flex 和 bison 命令。
  3. 与 IDE(Ubuntu 12.04 上的 Qt Creator)和源代码控制正确集成,以便在我构建 flex 时调用 bison 来生成词法分析器和解析器。

我显然想要第三种选择,但不知道该怎么做。

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

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

4

2 回答 2

3

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

在此处输入图像描述

我问了一个相关的问题 -即使函数存在未定义的引用错误

于 2013-01-24T14:14:40.093 回答
1

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

一种解决方案(从这里)是直接编辑.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.commands

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

于 2021-03-12T00:32:33.193 回答