Я настроил наш скрипт сборки для автоматической генерации исходников из файлов Bison / Flex.
Я собираю выходные данные Flex / Bison вместе в статическую библиотеку и связываю ее с нашим основным исполняемым файлом. Наши заголовки хранятся в отдельном каталоге, этот каталог известен библиотеке, так как я использовал target_include_directories()
.
Меня смущает то, что я получаю ошибку компиляции Cannot open include file
в файлах *.l
и *.ypp
. Он определенно правильный, а также target_include_directories
указывает на одну и ту же директорию, которую использует каждый файл в проекте, и с этим проблем вообще нет.
Есть идеи?
Edit:
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"
)