вопрос о синтаксисе команды cmake

Я требую синтаксиса макроса CMAKE, который генерирует .cc и.h файлы от инструмента как lex/yacc.

Мог кто-то показывать мне синтаксис для следующего изобретенного примера:

скажите, что у меня есть файл y.cc, который зависит от x.cc и x.h, эти два упомянутые файла сгенерированы инструментом z_tool из файла x.z. Что было бы синтаксис для этого быть?

Поскольку этот пример предполагает, что y.cc будет превращен в статическую библиотеку, и поскольку я довольно плохо знаком с CMAKE, полный CMakellist.txt для этого изобретенного примера был бы очень полезен. Я ищу портативное решение как инструменты, которые я использую, доступны на вариантах UNIX, а также окнах.

8
задан Hassan Syed 22 March 2010 в 11:35
поделиться

1 ответ

Вместо того чтобы давать ответ на надуманном примере, вот способ создания исполняемого файла с использованием flex и bison

find_package(BISON)
find_package(FLEX)

BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cc)
FLEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BINARY_DIR}/lexer.cc)
ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable(Foo
  Foo.cc
  ${BISON_MyParser_OUTPUTS}
  ${FLEX_MyScanner_OUTPUTS})
target_link_libraries(Foo ${FLEX_LIBRARIES} ${BISON_LIBRARIES})

Пакеты CMake find для bison/flex включены в установку по умолчанию, так что это кроссплатформенный вариант.

В общем случае для создания вывода, который впоследствии будет использоваться в качестве ввода, можно воспользоваться функцией add_custom_command. Если вы используете вывод пользовательской команды в качестве входа в библиотеку или исполняемый файл, то CMake знает, что нужно выполнить вашу пользовательскую команду перед компиляцией исходных текстов для библиотеки/исполняемого файла.

15
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: