Не удается запустить Doxygen из Meson в проекте C ++ - PullRequest
0 голосов
/ 26 сентября 2018

Я не могу запустить Doxygen через конфигурацию Meson.

Это связанный код в meson.build:

doxygen = find_program('doxygen')
...
run_target('docs', command : 'doxygen ' + meson.source_root() + '/Doxyfile')

Исполняемый файл doxygen успешно найден:

Программа обнаружила doxygen: ДА (/ usr / bin / doxygen)

Однако при запуске появляется следующее сообщение об ошибке:

[0/1] Выполняетсявнешние команды docs.
Не удалось выполнить команду "doxygen / home / project / Doxyfile".Файл не найден.
FAILED: meson-docs

Запуск его вручную из командной строки:

/usr/bin/doxygen /home/project/Doxyfile
doxygen /home/project/Doxyfile

Что не так в моей конфигурации meson.build?

1 Ответ

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

В соответствии со ссылкой manual ,

команда представляет собой список , содержащий команду для запуска и аргументы для передачи вЭто.Каждый элемент списка может быть строкой или целью

Итак, в вашем случае вся строка обрабатывается мезоном как команда, то есть имя инструмента, а не как команда + аргументы.Итак, попробуйте это:

run_target('docs', command : ['doxygen', meson.source_root() + '/Doxyfile'])

Или лучше использовать непосредственно результат find_program () :

doxygen = find_program('doxygen', required : false)
if doxygen.found()
  message('Doxygen found')
  run_target('docs', command : [doxygen, meson.source_root() + '/Doxyfile'])    
else
  warning('Documentation disabled without doxygen')
endif

Обратите внимание, что если вы хотитеулучшить генерацию документов с поддержкой Doxyfile.in, вместо этого взгляните на custom_target () и пример, например this .

...