CMake编译Java代码

柱头

是否可以使用CMake编译并运行Java代码?

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

javac -classpath theClasspath mainClass.java

java -classpath theClasspath mainClass

如果是这样,请您告诉我如何实现此目标?

PS:我不想生成一个jar文件。只是为了编译Java类,并在可能的情况下运行它。

谢谢。

更新:我已经更改了命令。我不知道为什么未显示其他文本。可能是因为我使用了“ <”和“>”。

该死的

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,并添加一个使用JVM运行jar的CMake测试:

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文件和已编译的类文件目录的路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译Java代码错误

来自分类Dev

反编译 Java 代码

来自分类Dev

使用CMake使用CUDA代码编译c ++

来自分类Dev

cmake:如何分别编译生产代码和测试代码

来自分类Dev

编译无依赖的Java代码

来自分类Dev

如何查看Java编译代码

来自分类Dev

编译并运行Java代码-NoClassDefFoundError

来自分类Dev

如何查看Java编译代码

来自分类Dev

Java代码将无法编译

来自分类Dev

添加/删除已编译java代码的代码

来自分类Dev

在编译Kotlin代码之前从gradle运行CMake

来自分类Dev

使用CPP从CSV文件读取,并使用CMake文件编译代码

来自分类Dev

测试Java代码是否无法编译

来自分类Dev

在cygwin中运行和编译Java代码

来自分类Dev

Java编译时无法到达的代码错误

来自分类Dev

编译Java代码时缺少参数

来自分类Dev

沙盒Java代码在编译之前?

来自分类Dev

注释代码使Java出现编译错误?

来自分类Dev

为什么我的Java代码无法编译

来自分类Dev

测试Java代码是否无法编译

来自分类Dev

Eclipse不想在Java中编译代码

来自分类Dev

在Linux上编译Java源代码

来自分类Dev

重构Java脚本编译器的代码

来自分类Dev

为什么此Java代码成功编译

来自分类Dev

Java源代码编译失败-Cassandra函数

来自分类Dev

在构建需要编译代码的模块时,将自定义CMake标志传递给pip

来自分类Dev

如何在编译源代码之前告诉CMake下载外部项目

来自分类Dev

在Ubuntu 12.04上使用CMake使用Qt5编译代码

来自分类Dev

MKL示例代码可以使用cmake正常编译,但是在运行时崩溃