【问题标题】:Adding swig2.0 to usr/bin/ in order to run CMake将 swig2.0 添加到 usr/bin/ 以运行 CMake
【发布时间】:2020-05-03 19:53:09
【问题描述】:

我正在尝试为我的程序运行 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 类型共享 语言蟒蛇 源 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。

【问题讨论】:

  • 您应该尝试设置 CMake 变量 set(SWIG_EXECUTABLE /usr/bin/swig3.0) 以提示 CMake 在调用 FIND_PACKAGE(SWIG ...) 之前在哪里可以找到 SWIG。与 CMake 的常见情况一样,在进行此更改后,最好清除 CMake 缓存并从头开始运行 CMake。
  • 谢谢,已解决!为了不打扰同事的工作,我写了以下内容: if (NOT /usr/bin/swig2.0) set(SWIG_EXECUTABLE /usr/bin/swig) endif()

标签: c++ cmake swig


【解决方案1】:

把我的评论变成答案:

FindSWIG 模块使用SWIG_EXECUTABLE 变量作为要使用的 SWIG 的位置/版本的提示。当找到 SWIG 可执行文件时,将获得版本,并由 CMake 缓存。因此,CMake 的后续使用可能需要 相同 版本的 SWIG。

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

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

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

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多