为项目构建大型库时的最佳实践

时间:2015-01-26 15:50:27

标签: c++ c opencv raspberry-pi

我目前正在开发一个使用OpenCV库的Raspberry Pi项目。 OpenCV库非常庞大,它的构建过程非常广泛。我发现了script下载并安装了最新版本的OpenCV,并根据this question的一些建议,我能够构建库,并开始使用OpenCV中的函数。

考虑到OpenCV的实际构建过程花费的时间比构建我们的项目要长得多,只需构建一次库就可以了,而不是每次构建项目时都构建库吗? < / p>

虽然我意识到这可能是个人偏好,但我想知道其他人如何处理类似的情况。

2 个答案:

答案 0 :(得分:3)

您可能已经知道,不需要重新编译不会更改的代码。对于可执行文件和库都是如此。

一个库应该以整洁,预打包的形式为您提供成瘾功能。您添加到项目中的其他代码与库之间的区别在于库中包含的代码应该处于稳定状态,因此一旦构建,用户将能够使用其功能而无需任何维护麻烦; API将可用,它们将始终有效。您将能够丢弃任何实现文件,只需使用头文件(它们为您提供代码中的API)和库文件(包含已编译的实现)。

你几乎已经预编译了你的程序的一部分;一个也可以在其他项目中使用的部分,再次无需重新编译

请注意,C ++本身就是一个例子:编译器已经包含了C ++标准库(例如libc ++)的实现,因此您可以使用标准C ++头而无需重新编译C ++整体每次尝试“Hello World!”程序

您甚至可以从您认为已经完成并且稳定的项目部分中提取库:这可以让您减少编译项目所需的时间,即使它变得更大。这些原因是编程时为什么强烈鼓励模块化的一部分。

<强> TL; DR:只重新编译一次库不仅是可以接受的,很可能是你想做的。

答案 1 :(得分:-2)

编译一次然后只链接库是正常的。因此,编译器可以检测源文件是否有变化。