CMake активирует внешнюю программу - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу выполнить следующую команду

win_bison.exe --output="calc.tab.cpp" --defines="calc.tab.h"  "calc.y"

, а затем создайте исполняемый файл из продуктов этой команды с помощью CMake

add_executable(Calc calc.tab.cpp calc.tab.h)

Все файлы (win_bison.exe, calc.y) находятся в папке CMakeLists.txt.

Как правильно это сделать? Пожалуйста, дайте команды объяснения.

1 Ответ

0 голосов
/ 01 сентября 2018

Если ваш проект действительно структурирован таким образом, вы можете использовать FindBison CMake модуль

find_package(BISON)

BISON_TARGET(MyCalcParser calc.y 
  ${CMAKE_CURRENT_BINARY_DIR}/calc.tab.cpp
  DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/calc.tab.h)

add_executable(Calc ${BISON_MyCalcParser_OUTPUTS})

Примечания

  • Возможно, вам придется повлиять на места поиска find_package, установив переменную BISON_DIR в вызове командной строки CMake, то есть -DBISON_DIR=[source dir], или вы можете поместить исполняемый файл Bison где-нибудь в общедоступной системе / возможности ссылаться.
...