【问题标题】:How are open source projects commonly organized and deployed? [closed]开源项目通常是如何组织和部署的? [关闭]
【发布时间】:2010-01-01 11:32:39
【问题描述】:

我正在寻找有关如何通常执行发布第一个开源项目的源代码的技术部分的文档,特别是 C/C++、Java、Python 中的库密集型内容。

举个例子,如果我使用 Netbeans 等 IDE 和 Xerces-C 和 Boost 等各种库构建了一个 C++ 项目,我想了解以下问题:

  • 这是在我自己的环境之外为此类过程组织构建过程的最常用工具,更重要的是

  • 我如何以“通常正在完成”的方式学习它们?我使用许多开源项目,当然可以阅读构建代码(makefile 和配置选项等),但这并没有告诉我如何到达那里,重要的细节是什么以及一般预期的内容。

  • 是否有针对特定语言(如提到的语言)的类似“编码风格”部署指南?有没有相关指南的开源项目?

  • 在部署源代码时(而不是带有apt/port/etc的包,在那里可以解析依赖),部署库依赖的典型方式是什么?

我知道我可以阅读所有手册页和所有文档,但我想阅读“约定”以及它们是如何实现和预期的,而不是所有可能的技术选项。

我在另一个 stackoverflow 帖子上找到了这个,很好,但不是很具体: http://producingoss.com/en/producingoss.html

【问题讨论】:

    标签: c++ deployment version-control build open-source


    【解决方案1】:

    让我们看看其中一项开源功能。如果您想了解它的部署方式,请下载几个类似的开源项目并从中学习。所以,找一个和你一样的,研究它的来源。

    为什么会有帮助?问题是开源项目必须能够轻松在用户的机器上构建。否则没有人能够为他们做出贡献。因此,有关如何部署它们的所有必要信息通常包含在您下载的源代码中的INSTALLREADME 文件中。它们通常由几个简单的步骤组成。出于同样的目的,检查先决条件的可用性和版本是自动化的(在configure 脚本中),有时这些脚本甚至有助于安装它们。

    通常的预期是这样的

    # Download sources (this line is read from your website)
    wget http://myapp.org/myapp-source-2.15.tgz
    tar -xzf myapp-source-2.15.tgz
    cd myapp-2.15
    less INSTALL
    # read INSTALL file, where instructions about installing prerequisites are
    ./configure --help
    # Read help, learn about possible options
    ./configure --prefix=/install/here --without-sound
    make
    make install
    

    现在一些应用程序使用cmake 而不是autotools(带有configure 脚​​本的stuff)。

    我怀疑 Linux 项目是否真的需要 NetBeans 作为构建系统——这未免太过分了。但是这个 IDE 似乎会生成 makefile,所以要发布它们。为方便起见,您还可以将特定于 IDE 的项目文件提交到存储库中,但这不应该是构建软件的主要方式。

    用户希望在您的包中找到更多内容:

    • 许可信息(通常在LICENSE 文件中在每个源文件的开头)
    • 链接到项目主页(报告错误的地方)
    • 编码指南(作为文本文件)
    • 维护者须知(如何升级版本、如何添加模块等)

    【讨论】:

    • 您对 Netbeans 的看法是正确的,我实际上说过,我希望它能够独立于我自己的私有环境。可能您是对的,只需阅读大量资源和文档就会有所帮助,但我希望有一种标准的方法来完成它并描述它是如何完成的。 configure/make/makeinstall 过程当然是这样的,我想知道是否有人可能写过一本书或网站,介绍了面向公众的打包和发布源的整个过程(因为“普通”书籍是关于运送产品的)。
    • 为了从 NetBeans 转换为通用 makefile,您可能需要编写一个特殊的“维护者”脚本(也可以发布它)。关于组织代码,除了写关于使用特定工具(如 autotools 或 cmake)之外,没有什么可写的。只需检查任何源代码以了解应该存在的内容(我将编辑我的答案以获取一些想法)。
    【解决方案2】:

    您可以从http://llvm.org/docs/DeveloperPolicy.htmlhttp://llvm.org/docs/CodingStandards.html 开始。 LLVM 项目是一个组织良好的开源项目。

    【讨论】:

    • 谢谢,但这更多的是关于编码标准而不是源代码部署/构建标准,我正在寻找有关如何摆脱“..它在我的机器上运行..”的文档。
    • 我不确定这是否有帮助,但这就是我的项目所拥有的:ellcc.org/installation.html。说明有点复杂,因为我使用了各种来源的东西。
    【解决方案3】:

    当您似乎正在编写 Linux 应用程序时,您可能想看看 GNU 自动工具,例如 autoconf。他们上面其实有a good book,他们会为你处理大部分依赖问题。

    【讨论】:

      【解决方案4】:

      我推荐这个:http://producingoss.com/

      这本书解释了大部分常用的程序,以及许多社会事物,例如。如何应对贡献者。

      【讨论】:

        【解决方案5】:

        你要找的是build-system++

        如果您为 POSIX (linux) 平台开发或仅在 Win32 下使用 MingW,我建议您学习如何使用 autotools -- autoconf/automake/libtool 和朋友。

        它为您提供源代码打包、配置、测试、安装。它们非常适合分发打包程序 (deb/rpm)。

        它们的学习曲线相当陡峭,但它们是完成这些任务的非常强大的工具。

        但是,如果您想支持 MSVC 编译器,我建议您看一下 CMake,恕我直言,它的功能不那么强大,需要更多的编写,但是对于所有 dllexport/import 问题(或者,用不那么温和的话——废话)。

        这就是你要找的。​​p>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-02
          • 1970-01-01
          • 2014-07-07
          • 2015-07-19
          • 2011-04-16
          相关资源
          最近更新 更多