java - 非 C 项目的跨平台自动构建

标签 java c++ build cmake pascal

实际上,我需要在 Windows/Linux 平台下为不同的语言构建二进制文件 - Java、Pascal(Delphi/FPC)、C++、C# 等。

如何做到这一点?我现在正在为 C 项目使用 CMake,如下所示:

cmake --build . 提供 CMakeLists.txt

最佳答案

每个 *make 系统都不适用于 Java 项目,因为 make 基本上假设“一个文件输入,一个文件输出”之一(例如 .c.o)或“N 个文件输入,一个文件输出”(例如 *.o.a 之一,.dll, .exe)。使用这些“原语”执行构建。

但 Java 编译器本质上要求“输入完整的源代码树,输出完整的类树”。

这两个范式不匹配,尝试这样做迟早会引入比其值(value)更多的小问题。去过也做过。

您能做的最好的事情就是从顶层 Makefile 中调用 Ant 或 Maven(或其他)。

编辑:不要忘记另外两件事:

  • 使用 make 编译 Java 内容是一门黑暗、神秘的艺术。您不会发现很多人同时了解 Java 和 make,并且可以使用这种组合来解决问题。 Ant/Maven 和Java 是一个标准的组合。通过这种组合,可以轻松找到帮助或建议。

  • 许多 Java 框架需要特殊的编译步骤。在几乎所有情况下,都有可用的 Ant 和 Maven 插件。使用 make 你将不得不每次都重新发明轮子。

关于java - 非 C 项目的跨平台自动构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560444/

相关文章:

C++ boost : How To Run boost_check_library. py

c++ - 检查字符串是否包含其他字符串元素

r - 关于 .Rbuildignore 正确使用 devtools 和/或 RStudio

java - 更改浏览器选项卡时,从 Applet 打开的模型对话框位于 Applet 后面

java - Reactor Mono 发布到多个方法

java - 我正在尝试了解java和多线程中的Singleton类

java - 对于其余请求,验证在 Spring boot 中不起作用

c++ - dlopen : St9bad_alloc 错误

build - 如何在 vscode 工作区文件夹之间共享任务?

Powershell 模块存储用户设置的位置