Не удается запустить Doxygen из Meson в проекте C++
Я не могу запустить Doxygen через конфигурацию Meson.
Это связанный код в meson.build
:
doxygen = find_program('doxygen')
...
run_target('docs', command : 'doxygen ' + meson.source_root() + '/Doxyfile')
Исполняемый файл doxygen успешно найден:
Найдена программа doxygen: ДА (/usr/bin/doxygen)
Однако при запуске я получаю это сообщение об ошибке:
[0/1] Запуск внешних командных документов.
Не удалось выполнить команду "doxygen /home/project/Doxyfile". Файл не найден.
Не удалось: мезон-документы
Запустив его вручную из командной строки, он работает:
/usr/bin/doxygen /home/project/Doxyfile
doxygen /home/project/Doxyfile
Что не так в моем meson.build
конфигурация?
1 ответ
Согласно справочному руководству,
команда - это список, содержащий команду для запуска и аргументы для передачи ей. Каждый элемент списка может быть строкой или целью
Итак, в вашем случае вся строка обрабатывается мезоном как команда, то есть имя инструмента, а не как команда + аргументы. Итак, попробуйте это:
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() и пример, подобный этому.