将swig2.0添加到usr / bin /中以运行CMake

问题描述 投票:0回答:1

我正在尝试为我的程序运行CMake,但是我不断收到错误,所有错误都指向我在usr/bin目录中没有所需的Swig版本。

这是我在运行时遇到的错误:

home/program/build_program/Debug$ cmake .. -DCMAKE_BUILD_TYPE=Debug

CMake错误于/home/my_name/tools/cmake/share/cmake-3.15/Modules/FindSWIG.cmake:39(信息):命令“ /usr/bin/swig2.0 -swiglib”失败,输出:

呼叫堆栈(最近呼叫优先):CMakeLists.txt:245(FIND_PACKAGE)

CMakeLists.txt:246处的CMake错误(包括):用错误的参数数量调用INCLUDE。 include()只需要一个文件。

CMakeLists.txt:265(SWIG_ADD_LIBRARY)的CMake错误:未知的CMake命令“ SWIG_ADD_LIBRARY”。

-配置不完整,发生错误!另请参见“ /home/program/build_program/CMakeFiles/CMakeOutput.log”。

这是我在usr/bin中看到的内容:

usr/bin$ ls | grep swig
ccache-swig
ccache-swig3.0
swig
swig3.0

这些是我的CMakeLists.txt中的第245、246和265行:

((245)FIND_PACKAGE(需要SWIG)

(246)包含($ {SWIG_USE_FILE})

((265)SWIG_ADD_LIBRARY(pymcell类型共享语言python来源src / pymcell.i $ {SOURCE_FILES} $ {BISON_dynGeomParser_OUTPUTS} $ {FLEX_dynGeomScanner_OUTPUTS})

我认为这里的解决方案是在usr/bin中获得swig2.0,但我不确定如何做到这一点。

我尝试过的事情:

我已经安装了swig2.0.12,但是没有名为“ swig2.0”的文件,即使有,我也不确定如何正确地将其移动到usr/bin中。

我有点菜鸟,所以我希望这不是一个愚蠢的问题。

我正在使用Debian 9和CMake 3.15.4。

c++ cmake swig
1个回答
0
投票

将我的评论变成答案:

FindSWIG模块使用SWIG_EXECUTABLE变量作为要使用的SWIG位置/版本的提示。找到SWIG可执行文件后,将获取版本,并由CMake获取cached。因此,CMake的后续使用可能会期望SWIG的same版本。

[如果将CMake与多个SWIG版本一起使用,或者更新SWIG路径和/或版本,则可以设置此SWIG_EXECUTABLE变量以告诉CMake在哪里查看。

set(SWIG_EXECUTABLE /usr/bin/swig3.0)
find_package(SWIG REQUIRED)

更新机器上的SWIG版本或位置时,您想清除CMake中的所有cached SWIG变量,以便可以找到最新(或正确的)版本。为此,请清除CMake缓存,或删除CMakeCache.txt文件,然后重新运行CMake。

© www.soinside.com 2019 - 2024. All rights reserved.