2016-01-27 52 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。