как правильно настроить включает в себя с CMake и Bison - PullRequest
0 голосов
/ 06 сентября 2018

Я настроил наш скрипт сборки для автоматической генерации исходников из файлов 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"
)
...