我计划在Linux下用C和C ++制作几个项目。在某些项目中,我需要额外的库。如果我错了,请纠正我。我计划在/usr/local/include
中存储库。但是将一个目录混合在一个目录中是一种好习惯吗?也许最好在/usr/local/include
目录中创建libs name子目录?也许最好将标题和源存储在不同的目录中?需要最佳实践。
如何处理未编译的库,例如MiniIni
https://code.google.com/p/minini/。它带有头文件和C文件。我应该编译它并将/lib
目录和标题放到/include
。或者将所有内容放在/ include中更好?
答案 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)。
像这样,你的工作在你的系统中是非侵入性的,并且不会破坏它。