在Linux上进行软件开发的库位置和软件包

我们不久将开始一个新的基于Linux的开发工作; 而且我们正在大规模地开发Linux。 我们有一个定义良好的进程来处理Windows上的第三方和内部库,但我对Linux特定的变化和优化感兴趣。

这似乎是合乎逻辑的(如在Windows上)

  1. 没有大家下载和编译自己的版本的各种库,如升压/等。 但有正式的版本检入到某个版本库。
  2. 为了进一步将上面的库二进制文件签入到源代码控制中,所以不同的版本可以绑定到我们的代码中,所以例如我们的代码版本1.2需要增加1.41,整个事情才起作用。

因此,我们是否应该使用像apt-get软件包这样的东西来正式版本的本地服务器?

如果是这样,我们是否允许这些库安装到/ usr / local / include或其他地方的“自然”位置?

如果不; 我们只需将库签入到我们的普通存储库中,然后让我们的Makefile具有embedded其中的path(相对或其他),从而依赖于/ usr / local /?

其他人在这方面做了什么? 指向书籍/网站的指针也非常赞赏基于Linux的团队开发(应用程序,而不是内核)。

AFAIS为您使用的图书馆使用正常的占位符! 用户会做。

但是,检查所有库和配置脚本以及您使用的IDE和编译器以及编辑器和代码生成器(和.deb,如果有的话),以便在新计算机到达时安装整个开发环境意味着只需在一个命令中进行回购即可。 而且也得到一些旧的代码不需要安装旧的库! :D(对二进制搜索非常有用)

考虑使用和不使用库的情况下释放应用程序的两种方法。 所以,即使有人无法得到正确的版本,一切正常。 (如Skype,Tlen)

并添加脚本,将自动为您的吸入器建立系统。 只是有能力做到一个命令。

编辑(重播以下第一条评论):

不知道什么in-house意思?!? 你在家工作?

如果可能的话,使用将在客户端机器上使用的位置:)

把所有的环境都放回去也意味着对它的任何改变都会被记录下来,如果需要恢复的话就意味着只能输入一个命令。

开发环境的任何变化意味着可能引入新的错误,这样简单的方法来跟踪它们(二进制搜索),而不需要重新安装环境将只是大加。 如果你知道将使用不同版本的库二进制搜索将需要手动安装不同的他们:(

哦,还有一个提示:检查你的Linux发行版的打包系统是否提供简单的方法从包中提取已安装的文件,以便自动添加dev env的新安装部分。 回购(例如,一个脚本,将收到包,并将产生任何所需的文件到VC回购:),该脚本也应该投入到VC回购:))

如果很难保持图书馆的放置位置,请将它们全部放在一个文件夹中,每次更改时都要更新该文件夹。

对于一般从Linux发行版可用的库,我建议从那里获得它们。 我只是根据开发所需的所有库来构建一个元数据包。 对于基于Debian的发行版,这可以很容易地用equivs完成。 你也可以在那里指定需要的版本。 如果你需要版本,你的选择分配不提供,你仍然可以将它们托管在你自己的apt库中。 很明显,将源代码和构建脚本保存到VCS中的所有自定义构建包中是一个好主意。

至于内部发展的图书馆和图书馆,你觉得需要在内部进行修改,这取决于情况。 我不会把所有东西都粘在你的应用程序库中。 而应该使用像jhbuild这样的工具来自动完成构建所需库库的过程。

为这些库构建deb和/或rpm包可能仍然是一个好主意。 “持续整合”是时下流行的流行词。

如果你需要修改你使用的开源库,我建议在上游发送补丁, 这可能还有其他工作要做,但这不仅仅是为了与OSS社区打好关系,而且从长远来看可能会轻松地节省您的工作和悲伤。

希望有所帮助。