首页 > 解决方案 > 如何使用 32 位 Visual Studio 生成器使 CMake 的 FindJava 获得 64 位 Java

问题描述

我应用 CMake 来生成 Visual Studio 2017 解决方案,以便在 Windows 10 上构建 32 位应用程序。为了创建构建系统,我让 CMake 调用一些 Java 工具来生成一些要编译的代码(应用 Eclipse 建模框架)。为了找到 Java 本身,我FindJavafind_package(Java)调用中应用了 CMake finder 模块。

我观察到FindJava在这种情况下会自动选择 32 位版本的 Java,尽管也可以使用 64 位 Java。请注意,当我调用 CMake 生成 for 时Visual Studio 2017 x64FindJava将返回 64 位 Java。因此,Java 版本似乎取决于使用的生成器的位数。

我的问题是,32 位 Java 有时无法分配足够的堆内存来执行代码生成工具。

为避免这种情况,我希望FindJava始终找到独立于 Visual Studio 生成器位数的 64 位 Java。

我怎样才能做到这一点?

我目前使用 CMake 3.14,但如果有帮助可以更新。

编辑

我忘了提到我实现了许多开发人员在他们的机器上使用的 CMake 构建系统。所以我不希望在构建机器上假设 32 位和 64 位 Java 安装的固定路径。

标签: javacmake64-bit32-bit

解决方案


分析代码FindJava.cmake显示目前无法按要求手动选择 Java 位数。

我已经为此提交了更改请求:https ://gitlab.kitware.com/cmake/cmake/issues/20306


推荐阅读