我想测试一下Pocketsphinx in Node.JS。它说我需要安装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
。我试着转到the swig download page并按照安装说明进行操作,但似乎没有任何方法可以阻止错误的发生。顺便说一下,我正在MacBook上试用这个。
我真的不知道我在这里做什么。我只是想测试一下Pocketsphinx,现在我已经在4个不同的地方安装了Swig,CMake似乎无法识别其中任何一个。
任何帮助将是美妙的!
4条答案
按热度按时间fzsnzjdm1#
来这里寻找基于Windows的错误。我找到了一个似乎对我有效的解决方案,所以决定把它贴在这里。
SWIG_DIR
和SWIG_EXECUTABLE
。它们必须分别指向/path/to/the/swig/dir/
和/path/to/the/swig/dir/swig.exe
。/path/to/the/swig/dir
。通过在命令提示符下键入swig
来测试它。它应该显示消息must specify an input file. Use -help for available options
。find_package(SWIG required)
现在应该可以正常工作了。mrphzbgm2#
检查source code for the
FindSwig.cmake
。不幸的是,如果一个查找脚本没有按预期工作,并且您没有立即看到为什么会出现这种情况,您通常必须深入研究其源代码。在您的例子中,看起来CMake能够找到并运行SWIG可执行文件,但是无法获得swig目录。
尝试手动运行
swig -swiglib
并检查打印的目录是否确实包含swig.swg
文件。此外,请确保CMake找到的swig可执行文件实际上是正确的(您可以通过检查cmake-gui
、ccmake
curses接口或CMakeCache.txt
文件中的SWIG_EXECUTABLE
值来验证这一点)。请注意,一旦找到可执行文件路径,CMake将 * 不 * 更新它!因此,如果您对系统进行了影响可执行文件位置的更改,则必须清除该高速缓存(例如:通过删除
CMakeCache.txt
)并重新运行CMake以使更改生效。ymzxtsji3#
我试着自己解决。问题是当我输入
npm install swig
时。我忘了设置这个版本的Swig,编译器正在使用它。
我输入了
sudo npm uninstall swig
,它工作得很好。我觉得自己很蠢!ktca8awb4#
对于Linux:只需使用
sudo apt install swig
命令安装swig。