【问题标题】:How to build/compile C++, Java and Python projects? [closed]如何构建/编译 C++、Java 和 Python 项目? [关闭]
【发布时间】:2026-01-31 19:55:01
【问题描述】:

假设我有一堆不同编程语言(C++、Java、Python 等)的小目标,它们具有编程语言间的依赖关系(Java 项目依赖于 C++,Python 依赖于 C++)。如何构建/编译它们?

我尝试了 scons 和最近的 gyp。我不记得我对 scons 有什么问题。 Gyp 有一个非常丑陋的语言定义,而且我必须破解 ant 脚本才能构建我的 java 目标。

【问题讨论】:

  • 你是什么?这个问题严重需要更多解释
  • “构建它们的最佳方式”?.. 这完全是主观的。我使用 SCons 取得了相当大的成功。
  • 自从我开始编程以来,我一直在寻找这个问题的答案。如果你找到了,请分享。当在 * 中选择答案时,用户是否可以观看问题并获得更新?
  • @Yasky:您可以点击“星号”将问题设为您最喜欢的问题,以便您可以返回查看回复。
  • SCons 是我用于复杂构建的工具。它对所讨论的语言特别有效。 (如果你想处理复杂性,Maven 似乎是一个很棒的厨房水槽工具。Java IDE 对 Ant 有很好的支持,但我不想手动编辑 xml。)

标签: java c++ python build scons


【解决方案1】:

我会选择一个更可配置的构建工具,例如 ant 或 maven,作为起点。

Ant 是高度可配置的,在最坏的情况下,您可以使用它来执行另一个构建过程(例如、make 或您通常用于 C++ 的任何内容)。

Maven 也有许多原生支持除 java 之外的其他语言的插件。快速搜索插件页面显示 maven 具有构建 C 和 C++ 代码的本机支持,谷歌搜索还暗示了 3rd 方插件也将构建您的 python 项目。

虽然 ant 功能强大且可配置,但我同意您有时必须破解 ant 才能让它做您想做的事,这既不干净也不理想。在过去的一年里,我与 maven 合作过我的项目,我强烈推荐它。我们使用它来构建我们的 java 代码库、动作脚本前端、运行单元和集成测试,以及运行我们的数据库脚本。此外,它与我们的持续集成工具有很大的挂钩,因此我们运行的构建可以自动化。有了大量可用的插件,我们还没有发现 maven 不能为我们做的事情。

【讨论】:

    【解决方案2】:

    我曾经检查过 CMake(用于 C++),我非常喜欢它。它易于使用但功能强大,与 Make 语法非常相似。它还支持 Java。

    【讨论】:

    • 复制和删除文件呢?它是否也创建目录?如何判断项目依赖关系?
    • 它确实支持两者,但有关详细信息,您确实需要查看常见问题解答。 (cmake.org/Wiki/CMake_FAQ) CMake 有一个内置的依赖项扫描器,但你也可以明确地告诉 CMake 依赖项。在此处查看一些简单的 CMakeLists.txt 文件:cs.swarthmore.edu/~adanner/tips/cmake.php