我正在尝试使用 Doxygen 为我的代码创建文档。按照 Doxygen 文档,当我运行
cmake -G "Unix Makefiles" ..
时,编译器告诉我
CMake Error at CMakeLists.txt:112 (message):
Doxygen requires at least bison version 2.7 (installed: 2.3)
但是,当我运行
bison -V
时,我看到:
bison (GNU Bison) 3.8.2
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
通过将 bison
添加到我的
export PATH="/usr/local/opt/bison/bin:$PATH"
,将
~/.zshrc
包含在我的路径中。为什么 doxygen cmake 命令可能引用旧的 bison 2.3
?
就我而言,我确实喜欢提到的评论:在命令行中使用
-DBISON_ROOT=/usr/local/opt/bison
参数。
但首先我清除了 CMake 缓存。
这是我运行的命令:
rm CMakeCache.txt
cmake -G "Unix Makefiles" .. -DBISON_ROOT=/usr/local/opt/bison
我今天遇到了这个问题,实际上找到了一个相对简单的解决方案。有趣的是,
message export PATH="/usr/local/opt/bison/bin:$PATH"
是告诉你到底要做什么。不幸的是,该消息没有告诉您所需的顺序。在它开始运行我安装的 ohmyzsh 之类的东西之前,我将该行添加到了 ~/.zshrc 的第 3 行或第 4 行。问题解决后。
无法配置 CMake 来查找 Homebrew 安装的 Bison 版本 这篇文章解决了我的问题。 就我而言,我改变了
BISON_EXECUTABLE:FILEPATH=/usr/bin/bison
到
BISON_EXECUTABLE:FILEPATH=/usr/local/opt/bison/bin/bison
和
FIND_PACKAGE_MESSAGE_DETAILS_BISON:INTERNAL=[/usr/bin/bison][v2.3()]
到
FIND_PACKAGE_MESSAGE_DETAILS_BISON:INTERNAL=[/usr/local/opt/bison/bin/bison][v3.8.2()]
在 CMakeCache.txt 中,然后它就完美运行了。 (/usr/local/opt/bison/bin/bison 是“哪个野牛”告诉我的)
删除包含 CMakeCache.txt 的构建文件夹。 我通过brew将bison 2.7升级到3.X,但是CMakeCache.txt有bison(2.7)之前版本的数据,所以失败了。