sh: dot: 命令未找到 + doxygen + Lion

17
  • MacOS 版本:10.7.2(狮子山)
  • Doxygen 版本:1.7.5.1
  • Graphviz 版本:2.29

Doxygen 配置:

DOT_PATH = ../../../../Applications/Contents/MacOS/Graphviz
HAVE_DOT = YES
SHORT_NAMES = YES

从日志控制台中,首先一行会显示警告:

warning: the dot tool could not be found at ../../../../Applications/Contents/MacOS/Graphviz

我尝试了各种组合但是警告并没有消失,虽然它确实生成了图片。

使用9个并行线程生成点图...
运行第1/68张图的dot
sh: dot: command not found

运行dot时出现问题:退出代码=127,命令='dot',参数='" /Users/salilk/Documents/project/DoxygenDocs/html/a00033.dot" -Tpng -o "/Users/salilk/Documents/project/DoxygenDocs/html/a00033.png"'

在html目录下已经生成了.dot文件,但是没有.png文件。

现在如果我从终端执行相同的命令,则会生成.png文件并在其.html文件中显示。

控制台中的另一个错误是:

error: problems opening map file /Users/salilk/Documents/A2O Collaborate/DoxygenDocs/html/a00032.map for inclusion in the docs! If you installed Graphviz/dot after a previous failing run, try deleting the output directory and rerun doxygen.

这与上述问题有关吗?

我以前在Windows机器上使用过Doxygen,并没有遇到这些错误,我们需要为Mac做任何特定的配置吗?


1
我希望dot被安装在/usr/local/bin/dot中。你有检查过吗?如果它在那里,请使用DOT_PATH=/usr/local/bin/dot。 - doxygen
是的,它在那里了,现在DOT_PATH = /usr/local/bin/dot。但我仍然收到这个警告 - 警告:无法在/usr/local/bin/dot找到dot工具,并且错误与上述相同。 - Salil
2
路径真的是 /usr/local/bin/dot 吗?还是 dot 已经是可执行文件了?如果是这样,请尝试 /usr/local/bin。 - arne
1
@arne 设置 DOT_PATH = /usr/local/bin 可以正常工作,谢谢。 - Salil
我有完全相同的问题。新安装了Doxygen和graphviz,打开了dot图形,日志中出现了相同的错误消息。在终端中键入dot命令从dot文件创建png文件,并且“which dot”显示为/usr/local/bin。在终端中检查路径也显示路径为/usr/local/bin。但是 - 我怀疑Doxygen由于某种原因未使用此路径,因为当我修改我的项目的Doxygen文件并设置DOT PATH = /usr/local/bin时,正确地创建了图形。 - Huntrods
4个回答

24
将DOT_PATH设置为:/usr/local/bin

输入图像描述


在OS X El Captain、Eclipse Mars和Eclox插件中,也解决了我的问题! - Gabrer
3
如果你不知道你的“点”二进制文件在哪里,尝试在控制台中运行命令“dot -v”;出现的信息(假设你已经安装了Graphviz)包括“libdir”的完整路径,你要找的“bin”目录将位于该路径中的“lib”文件夹相同的路径中。 - DanyAlejandro

1

在您的doxygen.conf中将DOT_PATH设置为空白。这样做是有效的,因为doxygen会在您的路径中查找。

我使用macports安装了doxygen,所以dot位于/opt/local/bin/dot


1
DOT_PATH必须用引号括起来设置,否则带有空格的路径将无法工作。
DOT_PATH = "@DOXYGEN_DOT_PATH@"

看到它后很明显 ;) 非常感谢! - Jacob Block

1

对于那些在Doxfile上调用CMake的configure_file()的人,另一种选择是:

DOT_PATH = ${DOXYGEN_DOT_PATH}

对我来说,即使点的路径在$PATH中,上述方法也是我能让它工作的唯一方式。想象一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接