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

时间:2020-03-05 18:43:03  来源:igfitidea点击:

我正在启动一个新的C项目,该项目主要基于OSS。它还将在SourceForge上,并且我想借此机会学习组织这种代码的既定最佳实践。我正在使用libcurl和libz之类的库,并且将使用MinGW和MSYS对其进行编译。

我将分发与我的Projet一起使用的所有库的源副本,因此下载源的人们不必费力地寻找依赖关系。我应该将存储库的目录称为什么?到目前为止,我犹豫不决:

  • lib,因为它们是库。但是," lib"在UNIX世界中具有不同的含义。
  • src,因为它们是源文件。
  • 3rdparty,因为我没有写。

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

我应该怎么做呢?是否有我应该遵循的既定惯例?他们被写下来了吗?

解决方案

回答

首先,对于外部库,我将使用" vendor",但这只是一个首选项。

其次,我认为在用户不知情的情况下,将其他库安装在系统根目录中并不是一个好主意。最重要的是因为这将与这些库的更高版本安装冲突。因此,我认为这些库的最佳位置将与应用程序位于同一目录中。

我们也可以将这些库静态编译到程序中。

回答

在上一项工作中,标准是将它们安装在名为3rdparty的目录中并在那里建立库(在3rdparty / LIBNAME / Debug等中)。

回答

我们使用带有_ext或者_EXT后缀(即MyProject_EXT)的东西来表示它在我们的项目外部,用于存储我们链接到的外部软件包的源代码。

我同意彼得的看法。外部库不应内置到系统根目录中,因为它们可能会引起冲突。我会在它们的目录中构建它们,然后将它们安装到应用程序所独有的/ lib目录(或者也许是/ extlib)中,并在那里链接到它们。