源内构建与源外构建


10

在我的(主要是C ++)开发中,我一直坚持使用源代码之外的版本。也就是说,我的来源通常坐落在一个/project/src目录和建立生活在一个/project/build/bin/release/project/build/bin/debug目录。之所以这样做,是因为它可以使我的源目录与中间文件保持干净,我的所有二进制文件都位于一个位置,打包更容易,清理更容易,版本控制也更容易。(我有什么想念吗?)

我现在正在继承一个使用源代码内部构建的(大型)项目。这种结构的动机是什么,它的优点是什么?(我最关心的是工程级别的原因与个人喜好类型的原因。)

我希望拉科斯(Lakos)的“大型C ++软件设计”能在其中发挥作用,但如果这样做,我会错过它。


2
道歉。我正在寻找“在源代码中改进'x'”或“他们对确保'y'的帮助”或“然后自动测试就可以'z'”。不是咆哮。我特别不想在这里引起见解!
DiB

10
由于前任者的懒惰,源代码构建是您的诅咒。它们对所有内容(源代码控制,交叉构建,文本查找等)都很糟糕,但是使用裸露的makefile来创建它们却非常容易。抱歉,这是一个咆哮。但是是客观的

1
您所说的“源代码”构建到底是什么意思?诸如此类/project/src/bin/release,或者实际上是所有中间文件和输出文件/project/src?如果有十几个源文件,则后者确实是一团糟,前者是可以的。
布朗

2
@Tibo,它不仅使makefile变得异常简单,而且似乎也是大多数IDE的默认设置(至少在我几年前检查过)。
Bart van Ingen Schenau,

4
@BartvanIngenSchenau真的吗?在这种情况下,您一直在使用什么IDE?Qt不会这样做,实际上它似乎将构建与源代码的距离尽可能地远,Eclipse不会这样做,您可能会说Clion会这样做,但这只是由于main.cpp 最初位于项目的顶层,但仍在远离源的顶层创建一个单独的cmake构建目录。我相信MSVS在这方面也与Clion类似。
WHN

Answers:


9

在向社区询问并继续在线搜索后,我无法找到使用源代码内部版本的重要工程依据。(有许多避免这种情况的原因的示例。)

我发现的唯一客观原因(如@BartvanIngenSchenau的评论所暗示)是,有时构建系统默认使用源内构建。由于采用这种默认设置,因此它们不需要设置时间的开销,这对于非常小的(或临时的)项目可能是完全可以接受的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.