无法在 C++ 项目上从 Meson 运行 Doxygen

Pie*_*tro 4 c++ configuration doxygen meson-build

我无法通过 Meson 的配置运行 Doxygen。

这是中的相关代码meson.build

doxygen = find_program('doxygen')
...
run_target('docs', command : 'doxygen ' + meson.source_root() + '/Doxyfile')
Run Code Online (Sandbox Code Playgroud)

成功找到了 doxygen 可执行文件:

找到程序 doxygen:是 (/usr/bin/doxygen)

但是,当启动时,我收到此错误消息:

[0/1] 运行外部命令文档。
无法执行命令“doxygen /home/project/Doxyfile”。文件未找到。
失败:介子文档

从命令行手动运行它可以工作:

/usr/bin/doxygen /home/project/Doxyfile
doxygen /home/project/Doxyfile
Run Code Online (Sandbox Code Playgroud)

我的meson.build配置有什么问题?

pmo*_*mod 5

根据参考手册

command是一个包含要运行的命令和要传递给它的参数的列表。每个列表项可以是字符串或目标

因此,在您的情况下,介子将整个字符串视为命令,即工具名称,而不是命令 + 参数。所以,试试这个:

run_target('docs', command : ['doxygen', meson.source_root() + '/Doxyfile'])
Run Code Online (Sandbox Code Playgroud)

或者直接使用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
Run Code Online (Sandbox Code Playgroud)

请注意,如果你想提高文档生成的支持Doxyfile.in的,看看custom_target()来代替,例如像这样