存储库的路径。需要最佳实践

时间:2013-12-17 08:54:31

标签: c++ c linux libs

我计划在Linux下用C和C ++制作几个项目。在某些项目中,我需要额外的库。如果我错了,请纠正我。我计划在/usr/local/include中存储库。但是将一个目录混合在一个目录中是一种好习惯吗?也许最好在/usr/local/include目录中创建libs name子目录?也许最好将标题和源存储在不同的目录中?需要最佳实践。

如何处理未编译的库,例如MiniIni https://code.google.com/p/minini/。它带有头文件和C文件。我应该编译它并将/lib目录和标题放到/include。或者将所有内容放在/ include中更好?

4 个答案:

答案 0 :(得分:2)

如果你谈论libs,我认为你的意思是编译库(.so文件或.a文件)。那些应该进入/usr/local/lib/。标题应该进入/usr/local/include。源.cpp文件通常不应该在安装中的任何位置。有时需要安装它们,因此可以按需重建(dkms浮现在脑海中)。然后来源应该进入/usr/local/src/project_name/

我个人更喜欢将标题和库安装在/usr/local/include/usr/local/lib的子目录中,但不是每个人都同意。

/usr/local前缀始终应该是可配置的。虽然传统的make install应该将其用作默认设置,但发行版上的打包商肯定会将其更改为直接安装到/usr

答案 1 :(得分:1)

我希望你不要在/ usr / local / include中存储库。它们属于/ usr / local / lib或者可能是/ usr / local / lib64。

单个项目所需的标题不应该进入/ usr / local / include,它们应该留在项目中。如果要构建要包含在多个项目中的库,则只将内容放入/ usr / local / lib和/ usr / local / include。即便如此,我仍然将标题保留在项目的本地,并且只将它们复制到/ usr / local / include作为构建过程的一部分。

对于同一目录或项目树中的不同目录,它取决于项目的大小。当文件数量(源+包含)开始超过20时,我通常会开始将内容移动到单独的目录中。

答案 2 :(得分:0)

现在讨论使用子目录的问题。将所有库混合在一个目录中绝不是一个好习惯。所以更好的方法是使用子目录然后使用" relative"来引用相应的文件。路径。

答案 3 :(得分:0)

我建议将所有库存储在customlib目录中。

将LD_LIBRARY_PATH环境变量设置为此目录,或者如果使用gcc,则使用-L选项(例如,对于minini)。

像这样,你的工作在你的系统中是非侵入性的,并且不会破坏它。