在按拓扑排序的顺序构建依赖于C ++ CMake项目(在Linux中)时,我们有两种可能性:
完成每个项目,然后......
...“make install”它在某个前缀中。在项目中构建库时,链接到已安装的库。
...通过“make”构建它,不要安装。在项目中构建库时,链接到已建立的库到位。
这些选择的优点/缺点是什么?由自制程序脚本执行的构建,它解析依赖关系,按正确顺序构建等等。
答案 0 :(得分:1)
当然,你可以做到这两点。但是“安装”的想法是将库,标题,文档等放在一个定义良好的目录中,而不依赖于源代码树的布局。
单独的源代码,通常只是该程序包的程序员,并编译了proagrams库等,这对其他软件包的用户和程序员来说很有趣。
想象一下,您必须更改一个子包的目录结构。如果没有安装,你将不得不调整所有其他man脚本。
所以:
解决方案1的优点(==解决方案2的缺点)
答案 1 :(得分:0)
make
和make install
会执行两个概念上不同的事情。没有更好或更糟的。我将通过使用make
(来自“Unix编程艺术”)描述通常的程序安装顺序来解释:
make(all) - 您的所有生产应该生成项目的每个可执行文件。平时 所有制作没有明确的规则;相反,它指的是你所有的 项目的顶级目标(并且,不是偶然的,记录那些是什么)。 通常,这应该是makefile中的第一个产品,所以它会 是开发人员类型在没有参数的情况下执行的。
进行测试 - 运行程序的自动化测试套件,通常由一组单元组成 测试以发现回归,错误或其他与预期行为的偏差 在开发过程中。也可以使用'测试'生产 由软件的最终用户确保其安装正常运行 正确。
make install - 在系统目录中安装项目的可执行文件和文档 一般用户可以访问它们(这通常需要root权限)。 初始化或更新可执行文件所需的任何数据库或库 为了运作。
致Ericis Steven Raymond的回答