gpt4 book ai didi

java - 如何使用 32 位 Visual Studio 生成器使 CMake 的 FindJava 获得 64 位 Java

转载 作者:行者123 更新时间:2023-12-01 18:35:47 24 4
gpt4 key购买 nike

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

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

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

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

我怎样才能实现这一目标?

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

编辑

我忘了提及,我实现了 CMake 构建系统,供许多开发人员在他们的计算机上使用。因此,我不想假设构建机器上的 32 位和 64 位 Java 安装有固定路径。

最佳答案

也许您可以尝试在 CMake 中设置环境变量 JAVA_HOME。但是,您需要强制开发人员相应地设置他们的环境。

if(NOT DEFINED ENV{JAVA_HOME_64}) 
message(FATAL_ERROR "This build requires setting your JAVA_HOME_64 environment variable to your 64 bit version of Java.")
endif()

set(ENV{JAVA_HOME} "$ENV{JAVA_HOME_64}")

在 CMakeLists 中设置环境变量不会影响项目外部的环境变量。根据FindJava Documentation ,这应该按预期工作。

关于java - 如何使用 32 位 Visual Studio 生成器使 CMake 的 FindJava 获得 64 位 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60048562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com