通常如何组织和部署开源项目?

时间:2010-01-01 11:32:39

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

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

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

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

  • 我如何以“普遍完成”的方式学习它们?我使用了许多开源项目,当然可以读取构建代码(makefile和配置选项等),但这并没有告诉我如何实现这些目标,重要的细节是什么,以及通常的预期。

  • 是否有针对特定语言(如上所述)的类似“编码风格”部署指南?是否有开源项目有关于此的指导原则?

  • 在部署源代码时(而不是使用apt / port / etc的软件包来解决依赖关系),部署库依赖项的典型方法是什么?

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

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

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

当您似乎在编写Linux应用程序时,您可能需要查看GNU自动工具,例如autoconf。它们实际上有a good book,它们将为您处理大多数依赖性问题。

答案 2 :(得分:2)

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

为什么它有帮助?问题是开源项目必须能够轻松地在用户的机器上构建。否则,没有人能够为他们做出贡献。因此,有关如何部署这些信息的所有必要信息通常包含在您下载的来源的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脚本的stufff)。

我怀疑Linux项目实际上是否需要NetBeans作为构建系统 - 这将是一种过度杀伤力。但是这个IDE似乎生成了makefile,所以发送它们。为方便起见,您也可以将特定于IDE的项目文件提交到存储库中,但它不应该是构建软件的主要方法。

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

  • 许可信息(通常位于每个源文件开头的LICENSE文件中)
  • 链接到项目主页(报告错误的位置)
  • 编码指南(作为文本文件)
  • 维护人员的信息(如何更新版本,如何添加模块等)

答案 3 :(得分:1)

我建议:http://producingoss.com/

本书解释了大多数常用程序,以及许多社交内容,例如:如何应对贡献者。

答案 4 :(得分:0)

你在寻找什么是build-system ++

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

它为您提供源代码打包,配置,测试和安装。它们适用于配送包装商(deb / rpm)。

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

但是,如果你想支持MSVC编译器,我建议你看看CMake,恕我直言它功能不强,需要更多的写作,但你需要这个适用于所有dllexport / import问题的Windows(或者,用不太温和的话说 - 废话。

这就是你要找的东西。