23

是否可以使用 CMake 编译和运行 java 代码?

从命令行我在终端上写的命令是:

javac -classpath theClasspath mainClass.java

java -classpath theClasspath mainClass

如果是这样,您能否告诉我如何实现这一目标?

PS:我不想生成jar文件;只是为了编译java类,如果可能的话运行它。

谢谢。

更新:我改变了命令。我不知道为什么没有显示附加文本。可能是因为我使用了“<”和“>”。

4

1 回答 1

37

CMake 对编译 Java 代码和执行 Java 类文件的支持有些有限。

标准模块FindJava可用于查找安装在本地机器上的 JDK。标准模块UseJava为 Java 提供了一些功能。其中包括 add_jar将 Java 源文件编译为 jar 文件的功能。

这是一个演示如何使用add_jar. 给定 Java 示例源文件HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

以下 CMake 列表文件将编译HelloWorld.java为 jar 文件HelloWorld.jar,并添加一个 CMake 测试,该测试使用 JVM 运行 jar:

cmake_minimum_required (VERSION 2.8)

find_package(Java REQUIRED)
include(UseJava)

enable_testing()

project (HelloWorld NONE)

set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.6" "-target" "1.6")

add_jar(HelloWorld HelloWorld.java)

get_target_property(_jarFile HelloWorld JAR_FILE)
get_target_property(_classDir HelloWorld CLASSDIR)

message(STATUS "Jar file ${_jarFile}")
message(STATUS "Class compiled to ${_classDir}")

add_test(NAME TestHelloWorld COMMAND ${Java_JAVA_EXECUTABLE} -cp ${_jarFile} HelloWorld)

CMake 变量CMAKE_JAVA_COMPILE_FLAGS可用于指定编译标志。作为副作用,该add_jar命令将设置目标属性JAR_FILECLASSDIR可用于分别获取生成的 jar 文件和编译的类文件目录的路径。

于 2013-09-24T20:53:47.890 回答