CMake 错误:找不到 SWIG(缺少:SWIG_DIR)

问题描述 投票:0回答:4

我想在 Node.JS 中测试 Pocketsphinx 。它说我需要安装 Swig 版本 3.0.7 或更高版本。

我认为我正确安装了所有其他依赖项。我现在甚至可以在终端中输入 Swig 命令,但每当我运行

npm install pocketsphinx
:

时我都会收到此错误
CMake Error at /usr/local/Cellar/cmake/3.6.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find SWIG (missing: SWIG_DIR) (Required is at least version
  "3.0.7")
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.6.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/Cellar/cmake/3.6.3/share/cmake/Modules/FindSWIG.cmake:75 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:4 (find_package)

我尝试了

brew install swig
npm install swig
npm install -g swig
。我尝试访问 swig 下载页面 并按照安装说明进行操作,但我似乎没有采取任何措施来阻止错误的发生。顺便说一下,我正在 Macbook 上尝试这个。

我真的不知道我在这里做什么。我只是想测试 Pocketsphinx,现在我已经在 4 个不同的地方安装了 Swig,而 CMake 似乎无法识别其中任何一个。

任何帮助都会很棒!

node.js cmake swig pocketsphinx
4个回答
10
投票

来这里寻找基于 Windows 的错误。我找到了一个似乎对我有用的解决方案,因此决定将其发布在这里。

  • 在“系统变量”部分创建两个环境变量:
    SWIG_DIR
    SWIG_EXECUTABLE
    。它们必须分别指向
    /path/to/the/swig/dir/
    /path/to/the/swig/dir/swig.exe
  • 此后,在 PATH 变量中再添加一个条目:
    /path/to/the/swig/dir
    。通过在命令提示符中键入
    swig
    来测试这一点。它应该显示一条消息
    must specify an input file. Use -help for available options
  • 重新启动计算机以应用所有环境变量更改。
    find_package(SWIG required)
    现在应该可以正常工作了。

6
投票

检查源代码以获取

FindSwig.cmake

不幸的是,如果查找脚本无法按预期工作,并且您无法立即了解为什么会出现这种情况,那么您通常必须深入研究其源代码。在您的情况下,CMake 似乎能够找到并运行 SWIG 可执行文件,但随后无法获取 swig 目录。

尝试手动运行

swig -swiglib
并检查打印的目录是否确实包含
swig.swg
文件。另外,请确保 CMake 找到的 swig 可执行文件实际上是正确的(您可以通过检查
SWIG_EXECUTABLE
cmake-gui
curses 接口或
ccmake
文件中
CMakeCache.txt
的值来验证这一点)直接)。

请注意,一旦找到可执行文件路径,CMake 将不会更新它!因此,如果您对系统进行的更改影响了可执行文件的位置,则必须清除缓存(例如,通过删除

CMakeCache.txt
)并重新运行 CMake 以使更改生效。


1
投票

我尝试自己解决这个问题。问题是当我输入

npm install swig
时。

我忘记设置这个版本的 Swig,编译器正在使用它。

我输入了

sudo npm uninstall swig
,效果非常好。我觉得自己好傻!


0
投票

对于 Linux:只需使用“sudo apt install swig”命令安装 swig。

© www.soinside.com 2019 - 2024. All rights reserved.