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

时间:2018-01-22 13:04:33

标签: node.js cmake swig pocketsphinx

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

我认为我正确安装了所有其他依赖项。我现在甚至可以在终端中键入Swig命令,但每当我运行<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="US-ASCII" %> 时我都会收到此错误:

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。我试着去the swig download page并遵循安装说明,但我似乎没有做任何事情可以阻止错误发生。我顺便在Macbook上尝试这个。

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

任何帮助都会很精彩!

3 个答案:

答案 0 :(得分:4)

检查source code for the FindSwig.cmake

不幸的是,如果查找脚本无法按预期工作,并且您没有立即看到为什么会这样,那么您通常需要深入了解其来源。在您的情况下,看起来CMake能够找到并运行SWIG可执行文件,但随后无法获取swig目录。

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

请注意,一旦找到,CMake将更新可执行路径!因此,如果您对影响可执行位置的系统进行更改,则必须清除缓存(例如,删除CMakeCache.txt)并重新运行CMake以使更改生效。

答案 1 :(得分:3)

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

  • 在“系统变量”部分中创建两个环境变量:SWIG_DIRSWIG_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)现在应该可以正常工作。

答案 2 :(得分:0)

我最终试图为自己解决这个问题。问题是当我输入npm install swig时。

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

我键入了sudo npm uninstall swig并且效果很好。我觉得很蠢。