UseJava: Fix create_javah CLASSPATH handling on Windows
Preserve semicolons in the value.
This commit is contained in:
parent
249aac71d0
commit
18c3714f4f
|
@ -1212,7 +1212,7 @@ function (create_javah)
|
|||
|
||||
set (_output_files)
|
||||
if (WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
set(_classpath_sep ";")
|
||||
set(_classpath_sep "$<SEMICOLON>")
|
||||
else ()
|
||||
set(_classpath_sep ":")
|
||||
endif()
|
||||
|
@ -1242,7 +1242,7 @@ function (create_javah)
|
|||
endif()
|
||||
endforeach()
|
||||
string (REPLACE ";" "${_classpath_sep}" _classpath "${_classpath}")
|
||||
list (APPEND _javah_options -classpath ${_classpath})
|
||||
list (APPEND _javah_options -classpath "${_classpath}")
|
||||
endif()
|
||||
|
||||
if (_create_javah_OUTPUT_DIR)
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "C.h"
|
||||
|
||||
JNIEXPORT void JNICALL Java_C_printName(JNIEnv *, jobject)
|
||||
{
|
||||
printf("C\n");
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
class C
|
||||
{
|
||||
public C()
|
||||
{
|
||||
}
|
||||
|
||||
public native void printName();
|
||||
|
||||
static {
|
||||
try {
|
||||
|
||||
System.loadLibrary("B");
|
||||
|
||||
} catch (UnsatisfiedLinkError e) {
|
||||
System.err.println("Native code library failed to load.\n" + e);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,10 +9,13 @@ include (UseJava)
|
|||
# JNI support
|
||||
find_package(JNI)
|
||||
|
||||
add_jar(hello3 B.java HelloWorld2.java)
|
||||
create_javah(TARGET B_javah CLASSES B CLASSPATH hello3)
|
||||
add_jar(B1 B.java)
|
||||
add_jar(C1 C.java)
|
||||
create_javah(TARGET B_javah CLASSES B C CLASSPATH B1 C1)
|
||||
|
||||
add_library(B SHARED B.cpp)
|
||||
add_jar(hello3 HelloWorld2.java)
|
||||
|
||||
add_library(B SHARED B.cpp C.cpp)
|
||||
add_dependencies(B B_javah)
|
||||
|
||||
target_include_directories(B PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
|
||||
|
|
|
@ -5,6 +5,11 @@ class HelloWorld2
|
|||
B b;
|
||||
b = new B();
|
||||
b.printName();
|
||||
|
||||
C c;
|
||||
c = new C();
|
||||
c.printName();
|
||||
|
||||
System.out.println("Hello World!");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue