【问题标题】:How to use FLEX in CMAKE如何在 CMAKE 中使用 FLEX
【发布时间】:2012-12-04 20:17:52
【问题描述】:

我试图找出在 Cmake 文件中仅使用 flex 来构建共​​享库时我做错了什么。

我基本上有以下几种

find_package(FLEX)
FLEX_TARGET(Test ../src/test.l ../src/test.c)
set(SRC_FILES mysource.c ${FLEX_Test_OUTPUTS})
add_libary(testlib ${SRC_FILES})
target_link_libraries(testlib crypto c ${FLEX_LIBRARIES})

这给了我一个问题,说它找不到 ../src/test.c

有什么办法可以确保 Lex 先跑吗?其次,我怎样才能将我的 -L 和 -d 选项传递给 lex(就像我在这个 makefile 的正常、预 cmake 版本中所做的那样)

【问题讨论】:

  • 我重新标记了这个;我相信这是关于词法分析器(AKA Lex 或 gnu-flex)的问题,而不是关于 UI 框架(Adobe/Apache Flex)的问题

标签: c cmake lex flex-lexer


【解决方案1】:

为什么要将输出文件放在源目录中?

我建议使用${CMAKE_CURRENT_BINARY_DIR}:

FLEX_TARGET(Test ../src/test.l ${CMAKE_CURRENT_BINARY_DIR}/../src/test.c)

至于

有什么办法可以确保 Lex 先跑吗?

你不需要这样做,CMake 可以通过它自己的猜测这个依赖。我认为问题在于使用源目录作为输出文件,或者../src 目录在flex 运行之前不存在。

其次,我如何将我的 -L 和 -d 选项传递给 lex

在输出参数之后列出它们:

FLEX_TARGET(Test ../src/test.l ${CMAKE_CURRENT_BINARY_DIR}/../src/test.c -L -d)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2013-10-24
    • 2021-02-09
    • 2016-08-09
    • 2010-12-21
    • 2014-12-16
    • 2023-04-02
    相关资源
    最近更新 更多