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

Mys*_*ake 7 swig cmake node.js pocketsphinx

我想在 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)
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助都会很棒!

小智 7

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

  • 请注意,对我来说,这不起作用。您只需提供“SWIG_EXECUTABLE”。CMake 可以从“SWIG_EXECUTABLE”派生“SWIG_DIR”,另外“SWIG_DIR”应该指向包含 swig 库的目录,通常是“/path/to/swig/dir/Lib”。如果您收到类似“error : Unable to find 'swig.swg'”的错误,请尝试删除“SWIG_DIR”变量。 (2认同)

Com*_*sMS 5

检查的源代码FindSwig.cmake

不幸的是,如果 find 脚本没有按预期工作,并且您没有立即明白为什么会这样,您通常必须深入研究它的来源。在您的情况下,看起来 CMake 能够找到并运行 SWIG 可执行文件,但未能获得 swig 目录。

尝试手动运行swig -swiglib并检查打印的目录是否确实包含swig.swg文件。同时,须确保C进行痛饮可执行FOUND实际上是正确的(你可以通过检查的值来验证这SWIG_EXECUTABLE无论是在cmake-gui中,ccmake诅咒接口,或以CMakeCache.txt直接文件)。

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