如何设置包括正确使用CMake和Bison

时间:2018-09-06 09:44:52

标签: cmake bison flex-lexer

我设置了构建脚本以从Bison / Flex文件自动生成源。 我将Flex / Bison的输出编译到一个静态库中,并将其链接到我们的主要可执行文件。我们的标头存储在单独的目录中,自从我使用target_include_directories()以来,库就知道该目录。

让我感到困惑的是,我在Cannot open include file*.l文件中遇到了编译错误*.ypp。绝对是正确的目录,并且target_include_directories指向项目中其他文件使用的相同目录,使用这些目录根本没有问题。

有什么想法吗?

编辑:

find_package(FLEX)
if(NOT FLEX_FOUND)
    message(SEND_ERROR "Flex not found")
endif()
FLEX_TARGET(TOKENIZER Tokenizer.l  ${CMAKE_CURRENT_BINARY_DIR}/Tokenizer.cpp)

find_package(BISON)
if(NOT BISON_FOUND)
    message(SEND_ERROR "Bison not found")
endif()
BISON_TARGET(PARSER Parser.ypp ${CMAKE_CURRENT_BINARY_DIR}/MaterialParser.cpp)


ADD_FLEX_BISON_DEPENDENCY(TOKENIZER PARSER)

add_library(flexbison STATIC 
    ${FLEX_MATERIAL_TOKENIZER_OUTPUTS}
    ${BISON_MATERIAL_PARSER_OUTPUTS}
)

target_include_directories(flexbison
    PUBLIC
        "src/header"
)

0 个答案:

没有答案