管理第三方库安装C



我想知道如何智能地管理第三方C 依赖性Linux(Ubuntu)的建筑物和安装。我目前设置的方式是一个具有所有必要压缩第三方来源的git-lfs。然后,我使用我写的shell脚本来安装所有必要的系统依赖项,然后解压缩并构建所需的库。此Shell脚本还需要注意设置所有路径,以便我们的源代码可以轻松地链接到第三方库。

我们脚本的示例命令是./install opencv或./install everything

但是,在过去的几个月中,脚本变得很大,有时会在某些库已经安装或其他次要问题时断开。因此,我想用一些更聪明和有用的东西代替它。我目前一直在考虑编写某种Python脚本,但是仅将语言从Shell更改为Python并不是很大的优势。因此,我希望是否有任何特定的Python库可以帮助我管理这些库。

我已经研究了厨师和其他自动化的东西之类的东西,但这对于我正在从事的小型项目来说是过分的。

我想知道其他人在这个第三方管理中使用了什么,因为可悲的是C 没有PIP。

我将jhbuild用于这种事情(如果我理解您正确地做的事情)。它来自GNOME项目(他们使用它来从源构建整个桌面),但是对于任何一组项目都很容易自定义。最近的Ubuntus中包装的jhbuild效果很好。

您编写了一些XML来描述每个项目:在哪里下载源,应用的补丁,使用哪些配置标志,其依赖于哪些项目等等;然后,当您输入jhbuild build mything时,它可以算出要构建的内容,并以什么顺序进行操作。它对更改非常明智,因此,如果您在构成堆栈的一个项目中编辑源文件,则只会重建受影响的零件。

例如,我为FFTW3(出色的快速傅立叶变换库:

  <autotools id="fftw3" 
    autogen-sh="configure"
    autogenargs="--disable-static --enable-shared --disable-threads"
    >
    <branch
      repo="fftw"
      module="fftw-3.3.4.tar.gz"
    />
    <dependencies>
      <dep package="libiconv"/>
    </dependencies>
  </autotools>

可能有明显的含义。这是通过释放tarball构建的,但也可以从git构建。它对cmake项目感到满意。jhbuild用Python编写,因此自定义很容易。多亏了侏儒,包括许多常见的图书馆。

我实际上使用它来构建Windows二进制文件。您可以将其设置为使用交叉补偿器构建所有内容,然后将其放入Docker中。它使其成为任何人都能在任何平台(几乎)平台上构建大型且复杂的应用程序的单线。当然,您也可以使用它来进行自动化的夜间构建。

周围可能有更好的事情,但对我来说效果很好。

最新更新