CMake Error: Could NOT find SWIG (missing: SWIG_DIR)
CMake Error: Could NOT find SWIG (missing: SWIG_DIR)
我想测试一下 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 似乎无法识别其中任何一个。
任何帮助都会很棒!
检查source code for the FindSwig.cmake
。
不幸的是,如果查找脚本没有按预期工作并且您没有立即明白为什么会这样,您通常必须深入研究它的来源。在您的情况下,CMake 似乎能够找到并 运行 SWIG 可执行文件,但随后未能获得 swig 目录。
手动尝试 运行ning swig -swiglib
并检查打印的目录是否确实包含 swig.swg
文件。此外,请确保 CMake 找到的 swig 可执行文件实际上是正确的(您可以通过检查 cmake-gui
、ccmake
curses 接口中的 SWIG_EXECUTABLE
的值来验证这一点,或者直接在 CMakeCache.txt
文件中)。
请注意,一旦找到可执行文件路径,CMake 不会更新它!因此,如果您对影响可执行文件位置的系统进行了更改,则必须清除缓存(例如,通过删除 CMakeCache.txt
)并重新 运行 CMake 以使更改生效。
我试着自己解决。问题是当我输入 npm install swig
.
我忘记设置这个版本的 Swig,编译器正在使用它。
我输入了 sudo npm uninstall swig
并且效果很好。我觉得很傻!
来这里寻找基于 Windows 的错误。我找到了一个似乎对我有用的解决方案,因此决定在此处 post。
- 在 "System Variables" 部分创建两个环境变量:
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)
现在应该可以正常工作了。
我想测试一下 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 似乎无法识别其中任何一个。
任何帮助都会很棒!
检查source code for the FindSwig.cmake
。
不幸的是,如果查找脚本没有按预期工作并且您没有立即明白为什么会这样,您通常必须深入研究它的来源。在您的情况下,CMake 似乎能够找到并 运行 SWIG 可执行文件,但随后未能获得 swig 目录。
手动尝试 运行ning swig -swiglib
并检查打印的目录是否确实包含 swig.swg
文件。此外,请确保 CMake 找到的 swig 可执行文件实际上是正确的(您可以通过检查 cmake-gui
、ccmake
curses 接口中的 SWIG_EXECUTABLE
的值来验证这一点,或者直接在 CMakeCache.txt
文件中)。
请注意,一旦找到可执行文件路径,CMake 不会更新它!因此,如果您对影响可执行文件位置的系统进行了更改,则必须清除缓存(例如,通过删除 CMakeCache.txt
)并重新 运行 CMake 以使更改生效。
我试着自己解决。问题是当我输入 npm install swig
.
我忘记设置这个版本的 Swig,编译器正在使用它。
我输入了 sudo npm uninstall swig
并且效果很好。我觉得很傻!
来这里寻找基于 Windows 的错误。我找到了一个似乎对我有用的解决方案,因此决定在此处 post。
- 在 "System Variables" 部分创建两个环境变量:
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)
现在应该可以正常工作了。