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!
我不知道這段代碼有什麼問題(如果有的話),但是你可以通過使用「make VERBOSE = 1」來查看在錯誤/崩潰之前執行的命令, – DLRdave
@DLRdave,是的。我注意到這個「jni.h:沒有這樣的文件或目錄」在最後。所以,希望我所需要做的就是設置JVM路徑。我是CMake的新手,所以我正在查找代碼以最好的方式做到這一點。 – Mjones8323
我通過在set source properties命令中添加包裝器和接口文件的完整路徑來解決了我的特殊問題。爲了將它指向jni.h,我在開頭添加了「FIND_PACKAGE(JNI REQUIRED)」。 – Mjones8323