2011-07-27 22 views
1

我正在修改用C++编写的现有开源项目的CMake文件,尝试将其链接到SWIG Java接口文件。我从其他论坛拼凑起来的代码和修补程序是这样的:CMake访问SWIG并将java库链接到现有C++项目的问题

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”

Thanks!

+0

我不知道这段代码有什么问题(如果有的话),但是你可以通过使用“make VERBOSE = 1”来查看在错误/崩溃之前执行的命令, – DLRdave

+0

@DLRdave,是的。我注意到这个“jni.h:没有这样的文件或目录”在最后。所以,希望我所需要做的就是设置JVM路径。我是CMake的新手,所以我正在查找代码以最好的方式做到这一点。 – Mjones8323

+0

我通过在set source properties命令中添加包装器和接口文件的完整路径来解决了我的特殊问题。为了将它指向jni.h,我在开头添加了“FIND_PACKAGE(JNI REQUIRED)”。 – Mjones8323

回答

1

我通过在set source properties命令中添加包装器和接口文件的完整路径来解决了我的特殊问题。要指向jni.h,我在开头添加了FIND_PACKAGE(JNI REQUIRED)