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

Cannot run Doxygen from Meson on a C++ project

本文关键字:运行 Meson 项目 C++      更新时间:2023-10-16

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

这是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配置出了什么问题?

根据参考手册,

命令

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

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

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(( 和这样的示例。