2016-01-27 49 views
0

我有一些SWIG代碼,我試圖在購買Visual Studio之前在Cygwin上編譯。我的CMakeList.txt在OSX上正常工作。在Windows上,我安裝了Cygwin的版本cmake的3.3.1,我安裝了甲骨文最新的JDK和運行下面的CMakeLists.txt(該.LIB後綴評論,因爲它沒有幫助):如何在Cygwin上使用cmake的FindJNI?

cmake_minimum_required(VERSION 2.8.9) 
project(myproject) 

#set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") 

find_package(Java COMPONENTS Development) 
find_package(JNI REQUIRED) 

但它的嗆這種輸出:

.... 
-- Found Java: /home/user/jdk/bin/java.exe (found version "1.8.0.71") 
CMake Error at /usr/share/cmake-3.3.2/Modules/FindPackageHandleStandardArgs.cmake:148 (message): 
    Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY) 
Call Stack (most recent call first): 
    /usr/share/cmake-3.3.2/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE) 
    /usr/share/cmake-3.3.2/Modules/FindJNI.cmake:287 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    CMakeLists.txt:20 (find_package) 


-- Configuring incomplete, errors occurred! 

,這是在我.bash_profile下面幾行:

export JAVA_HOME="/home/user/jdk" 
export JAVA_AWT_LIBRARY="$JAVA_HOME/lib/jawt.lib" 
export JAVA_JVM_LIBRARY="$JAVA_HOME/lib/jvm.lib" 

這反映了幾個我已經嘗試過的事情。 JDK在我的主目錄中的原因是因爲我試圖查看問題是否是原始安裝路徑/cygdrive/c/Program Files/Java/jdk1.8.0_71中的空間,但是我得到了兩個位置的相同錯誤。

這是應該工作的東西嗎?

回答

0

啊,我只是想出了一個解決方案。這些線條顯得一起解決它:

set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") 
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib") 

雖然我不知道爲什麼我需要設置他們自己。

我買了Visual Studio並遇到了類似的問題。在這種情況下,雖然它找到了Java,但除非專門選擇了Win64生成器,否則它無法找到JNI。