FindBISON
Поиск исполняемого файла bison и предоставление макроса для генерации пользовательских правил сборки.
Модуль определяет следующие переменные:
-
BISON_EXECUTABLE - путь к программе
bison -
BISON_VERSION - версия
bison -
BISON_FOUND - true, если программа найдена
Минимальную необходимую версию bison можно указать, используя стандартный синтаксис CMake, например find_package(BISON 2.1.3).
Если bison найден, модуль определяет макрос:
BISON_TARGET(<Name> <YaccInput> <CodeOutput>
[COMPILE_FLAGS <flags>]
[DEFINES_FILE <file>]
[VERBOSE <file>]
)
который создаст пользовательское правило для генерации парсера. <CodeOutput> — путь к файлу yacc. <CodeOutput> — имя файла исходного кода, сгенерированного bison. Также будет сгенерирован заголовочный файл, содержащий список токенов.
Доступны следующие параметры:
-
COMPILE_FLAGS <flags> - Указать флаги, которые нужно добавить в командную строку
bison. -
DEFINES_FILE <file> - Указать нестандартный заголовочный файл
<file>, который будет сгенерированbison. -
VERBOSE <file> - Указать
bisonнаписать подробное описание грамматики и парсера в заданный<file>.
Макрос определяет следующие переменные:
-
BISON_<Name>_DEFINED - true, если макрос выполнен успешно
-
BISON_<Name>_INPUT - Входной исходный файл, псевдоним для <YaccInput>
-
BISON_<Name>_OUTPUT_SOURCE - Исходный файл, сгенерированный bison
-
BISON_<Name>_OUTPUT_HEADER - Заголовочный файл, сгенерированный bison
-
BISON_<Name>_OUTPUTS - Файлы исходного кода, сгенерированные bison
-
BISON_<Name>_COMPILE_FLAGS - Параметры, используемые в командной строке
bison
Пример использования:
find_package(BISON)
BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/parser.h)
add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS})
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/module/FindBISON.html