java - CMake 访问 SWIG 并将 Java 库链接到现有 C++ 项目时出现问题

标签 java c++ cmake swig

我正在修改用 C++ 编写的现有开源项目的 CMake 文件,以尝试将其链接到 SWIG Java 接口(interface)文件。我从其他论坛拼凑并修改的代码是这样的:

    FIND_PACKAGE(SWIG REQUIRED)
    INCLUDE(${SWIG_USE_FILE})
    INCLUDE_DIRECTORIES(${JAVA_INCLUDE_PATH})
    INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/avogadro/src)
    SET(CMAKE_SWIG_FLAGS "")
    SET_SOURCE_FILES_PROPERTIES(mainwindow.i PROPERTIES CPLUSPLUS ON)
    SET_SOURCE_FILES_PROPERTIES(mainwindow.i PROPERTIES SWIG_FLAGS "-includeall")
    SWIG_ADD_MODULE(mainwindow java mainwindow.i mainwindow_wrap.c)
    SWIG_LINK_LIBRARIES(mainwindow ${JAVA_LIBRARIES})

我写的/发现的有什么问题吗?当我运行 cmake 命令时,它会构建。然而,当我运行 make -j3(我需要这样做以稍后访问新集成的库)时,它崩溃了,给出了非常模糊的错误消息“make:* [all] Error 2”

谢谢!

最佳答案

我通过在设置源属性命令中添加包装器和接口(interface)文件的完整路径来解决我的特殊问题。为了将它指向 jni.h,我在开头添加了 FIND_PACKAGE(JNI REQUIRED)

关于java - CMake 访问 SWIG 并将 Java 库链接到现有 C++ 项目时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848559/

相关文章:

c++ - 为什么在指定 -std=gnu++11 时使用 C++98?

java - TextView没有显示结果

java - 数据结构的这些属性称为什么?

c++ - 如果输入错误则无限循环

c++ - 将 OpenCV 构建为项目的一部分 - 调试 (F11) 到 OpenCV 库

c++ - 如果在 C++ 模板库中使用禁用的库功能,则警告用户

java - 什么是匿名内部类?

在 Mac 上的 Android 中创建数据报套接字时出现 java.net.BindException

c++ - futex 等待/唤醒对是否实现获取/释放语义?

C++ 字符串操作 - if 语句