代码之家  ›  专栏  ›  技术社区  ›  rix0rrr

组织我的C项目代码及其外部库的最佳方法是什么?[关闭]

  •  6
  • rix0rrr  · 技术社区  · 16 年前

    我正在启动一个新的C项目,主要是基于OSS的。它也将出现在sourceforge上,我想借此机会学习组织此类代码的既定最佳实践。我正在使用libcurl和libz这样的库,我将使用mingw和msys编译它。

    我将分发我与Projet一起使用的所有库的源代码,这样下载源代码的人就不必去寻找依赖项。我应该称存储库的目录为什么?到目前为止,我在以下两个方面犹豫不决:

    • lib,因为它们是库。然而,“lib”在UNIX世界中有不同的含义。
    • 因为它们是源文件。
    • 第三方,因为我没写。

    我应该在哪里编译这些库呢?我应该简单地配置它们并将它们安装到系统根目录,还是应该在其中设置一个目录,所有库都应该编译到该目录并从该目录链接到该目录?显然,这会对我的makefile产生影响。

    我该怎么办?我应该遵守既定的惯例吗?它们写在什么地方了吗?

    4 回复  |  直到 12 年前
        1
  •  1
  •   Peter Stuifzand    16 年前

    首先,对于外部库,我将使用 vendor 但这只是一种偏好。

    第二,我觉得安装不是个好主意 其他 库位于系统根目录中,用户不知道。最重要的是,这将与这些库的后期安装版本冲突。因此,我认为这些库的最佳位置应该与您的应用程序位于同一目录中。

    您还可以静态地将这些库编译到您的程序中。

        2
  •  2
  •   Jim Buck    16 年前

    在以前的一项工作中,标准是将它们安装在名为3rdparty的目录中,并在那里构建库(在3rdparty/libname/debug等中)。

        3
  •  1
  •   dagorym    16 年前

    我们使用带有“ext”或“ext”后缀(即myproject“ext”)的东西来表示它是我们项目外部的,可以存储我们所链接的外部包的源代码。

    我同意彼得的观点。外部库不应该构建到系统根目录中,因为它们可能导致冲突。我将在它们的目录中构建它们,然后将它们安装到/lib目录(或者/extlib)中,该目录对您的应用程序来说是唯一的,并在那里链接到它们。

        4
  •  1
  •   vonbrand    12 年前

    拜托 不要 将第三方源代码与您的代码一起发送到源代码中,或者静态链接到二进制文件中,或者以任何其他方式。这只会干扰其他副本,并且在库需要修复时不会得到更新。告诉用户需求是什么(并跟上库中API的变化!)。自编译用户将确保获得依赖项,分发将确保包与它们所提供的版本一起工作。