我设置了构建脚本以从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"
)