У меня есть следующий файл CMake, который является частью более крупного проекта (и поэтому находится в его папке и импортируется верхними уровнями с использованием add_subdirectory(...)
find_package(BISON REQUIRED)
find_package(FLEX REQUIRED)
include_directories(${PROJECT_SOURCE_DIR}/include/Parser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
bison_target(XPathParser
XPath.yy
${CMAKE_CURRENT_BINARY_DIR}/XPathParser.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/XPathParser.h)
flex_target(XPathScanner
XPath.flex
${CMAKE_CURRENT_BINARY_DIR}/XPathScanner.cpp
COMPILE_FLAGS "-Cm -B -L --c++ --nounistd")
add_flex_bison_dependency(XPathScanner XPathParser)
set_source_files_properties(${BISON_XPathParser_OUTPUTS}
${FLEX_XPathScanner_OUTPUTS}
PROPERTIES
COMPILE_FLAGS -Wno-sign-compare
COMPILE_FLAGS -Wno-effc++)
add_library(xpath OBJECT
${BISON_Parser_OUTPUTS}
${FLEX_Lexer_OUTPUTS}
${CMAKE_CURRENT_LIST_DIR}/XPathParserDriver.cpp)
Насколько мне известно, этот CMake должен выполнять FLEX и BISON, которые, в свою очередь, будут генерировать файлы C ++ до фактического вызова компилятора C ++.
По некоторым причинам, за пределами моего понимания, это не так. Я попытался очистить кэш CMake и перезапустить его с нуля; тем не менее, в файлах, созданных CMake, нет ни признаков FLEX, ни BISON.
Конечно, CMake находит и FLEX, и BISON и правильно устанавливает макросы bison_target
и flex_target
(я проверил это, связавшись с ними, добавив случайные значения: CMake злится и выдает мне ошибку).
Есть какая-нибудь подсказка о том, что происходит и чего мне не хватает?