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

d7v8vwbk  于 2023-10-20  发布在  其他
关注(0)|答案(4)|浏览(468)

我想测试一下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 swignpm install swignpm install -g swig。我试着转到the swig download page并按照安装说明进行操作,但似乎没有任何方法可以阻止错误的发生。顺便说一下,我正在MacBook上试用这个。
我真的不知道我在这里做什么。我只是想测试一下Pocketsphinx,现在我已经在4个不同的地方安装了Swig,CMake似乎无法识别其中任何一个。
任何帮助将是美妙的!

fzsnzjdm

fzsnzjdm1#

来这里寻找基于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)现在应该可以正常工作了。
mrphzbgm

mrphzbgm2#

检查source code for the FindSwig.cmake
不幸的是,如果一个查找脚本没有按预期工作,并且您没有立即看到为什么会出现这种情况,您通常必须深入研究其源代码。在您的例子中,看起来CMake能够找到并运行SWIG可执行文件,但是无法获得swig目录。
尝试手动运行swig -swiglib并检查打印的目录是否确实包含swig.swg文件。此外,请确保CMake找到的swig可执行文件实际上是正确的(您可以通过检查cmake-guiccmake curses接口或CMakeCache.txt文件中的SWIG_EXECUTABLE值来验证这一点)。
请注意,一旦找到可执行文件路径,CMake将 * 不 * 更新它!因此,如果您对系统进行了影响可执行文件位置的更改,则必须清除该高速缓存(例如:通过删除CMakeCache.txt)并重新运行CMake以使更改生效。

ymzxtsji

ymzxtsji3#

我试着自己解决。问题是当我输入npm install swig时。
我忘了设置这个版本的Swig,编译器正在使用它。
我输入了sudo npm uninstall swig,它工作得很好。我觉得自己很蠢!

ktca8awb

ktca8awb4#

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

相关问题