如何使用 32 位 Visual Studio 生成器使 CMake 的 FindJava 获得 64 位 Java
How to make CMake's FindJava get 64 bit Java with a 32 bit Visual Studio generator
我应用 CMake 生成一个 Visual Studio 2017 解决方案来构建一个 32 位应用程序 Windows 10. 为了创建构建系统,我让 CMake 调用一些 Java生成一些要编译的代码的工具(应用 Eclipse 建模框架)。为了找到 Java 本身,我在 find_package(Java)
调用中应用了 CMake 查找器模块 FindJava
。
我发现 FindJava
在这种情况下会自动选择 Java 的 32 位版本,尽管 64 位 Java 也可用。请注意,当我调用 CMake 为 Visual Studio 2017 x64
、FindJava
returns 生成 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,这应该按预期工作。
分析 FindJava.cmake
的代码表明,目前无法按要求手动 select Java 位数。
我已经为此提交了更改请求:https://gitlab.kitware.com/cmake/cmake/issues/20306
我应用 CMake 生成一个 Visual Studio 2017 解决方案来构建一个 32 位应用程序 Windows 10. 为了创建构建系统,我让 CMake 调用一些 Java生成一些要编译的代码的工具(应用 Eclipse 建模框架)。为了找到 Java 本身,我在 find_package(Java)
调用中应用了 CMake 查找器模块 FindJava
。
我发现 FindJava
在这种情况下会自动选择 Java 的 32 位版本,尽管 64 位 Java 也可用。请注意,当我调用 CMake 为 Visual Studio 2017 x64
、FindJava
returns 生成 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,这应该按预期工作。
分析 FindJava.cmake
的代码表明,目前无法按要求手动 select Java 位数。
我已经为此提交了更改请求:https://gitlab.kitware.com/cmake/cmake/issues/20306