我正在寻找有关如何共同发布第一个开源项目源的技术部分的文档,特别是C / C ++,Java,Python中的库密集型内容。
举一个例子,如果我使用像Netbeans这样的IDE和Xerces-C和Boost等各种库构建了一个C ++项目,我想了解这些问题:
这是在我自己的环境之外为这样的流程组织构建过程的最常用工具,更重要的是
我如何以“普遍完成”的方式学习它们?我使用了许多开源项目,当然可以读取构建代码(makefile和配置选项等),但这并没有告诉我如何实现这些目标,重要的细节是什么,以及通常的预期。
是否有针对特定语言(如上所述)的类似“编码风格”部署指南?是否有开源项目有关于此的指导原则?
在部署源代码时(而不是使用apt / port / etc的软件包来解决依赖关系),部署库依赖项的典型方法是什么?
我知道我可以阅读所有联机帮助页和所有文档,但我想了解“约定”以及它们是如何实现和预期的,而不是所有可能的技术选项。
我在另一个stackoverflow帖子上找到了这个,这很好,但不是很具体: http://producingoss.com/en/producingoss.html
答案 0 :(得分:2)
您可以从http://llvm.org/docs/DeveloperPolicy.html和http://llvm.org/docs/CodingStandards.html开始。 LLVM项目是一个组织良好的开源项目。
答案 1 :(得分:2)
当您似乎在编写Linux应用程序时,您可能需要查看GNU自动工具,例如autoconf。它们实际上有a good book,它们将为您处理大多数依赖性问题。
答案 2 :(得分:2)
让我们看看其中一个开源功能。如果您想了解它的部署方式,请下载几个类似的开源项目并从中学习。所以,找一个像你一样的人并研究它的来源。
为什么它有帮助?问题是开源项目必须能够轻松地在用户的机器上构建。否则,没有人能够为他们做出贡献。因此,有关如何部署这些信息的所有必要信息通常包含在您下载的来源的INSTALL
或README
文件中。它们通常包括几个简单的步骤。出于同样的目的,检查可用性和先决条件的版本是自动的(在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)
本书解释了大多数常用程序,以及许多社交内容,例如:如何应对贡献者。
答案 4 :(得分:0)
你在寻找什么是build-system ++
如果您为POSIX(linux)平台开发或者只在Win32下使用MingW,我建议学习如何使用autotools - autoconf / automake / libtool和朋友。
它为您提供源代码打包,配置,测试和安装。它们适用于配送包装商(deb / rpm)。
他们的学习曲线相当陡峭,但它们是执行这些任务的非常强大的工具。
但是,如果你想支持MSVC编译器,我建议你看看CMake,恕我直言它功能不强,需要更多的写作,但你需要这个适用于所有dllexport / import问题的Windows(或者,用不太温和的话说 - 废话。
这就是你要找的东西。