2011-07-27 44 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)