代码之家  ›  专栏  ›  技术社区  ›  Billy ONeal IS4

为什么“源代码外”构建不是默认的?

c++
  •  8
  • Billy ONeal IS4  · 技术社区  · 14 年前

    我最近刚刚发现,您可以配置visualstudio(但对于任何编译器来说,这个问题都是一样的)将intermediate.o文件转储到源代码树之外的单独文件夹中,而不是与每个单独的项目一起。这样就可以很容易地将项目清理为归档到zip或类似的内容。

    为什么这种配置并不常见?有什么明显的缺点吗?

    5 回复  |  直到 14 年前
        1
  •  2
  •   DrPizza    14 年前

    这就是

    事实上,如果您正在处理那些希望编译器输出与源文件放在一起的项目,则需要一些技巧。由于VC++默认为对象文件指定与其对应的源文件相同的名称(但扩展名不同),因此如果您有多个同名的源文件(但路径不同),则编译每个源文件将覆盖相应的对象文件。最后一个要编译的文件“wins”。

    要求源文件名在整个项目中是全局唯一的实际上是相当烦人的。您可以改变输出位置,例如,它包括一个路径;链接器仍然做正确的事情。

        2
  •  2
  •   Stack Overflow is garbage    14 年前

    这只是猜测,但我想不出更好的解释了。

        3
  •  2
  •   Peter Mortensen Sumit Kumar    6 年前

    这可能是一个带有历史答案的问题。第一个C编译器(因此是第一个C++编译器)被写在UNIX上。

    在Unix中,任何东西都没有“标准”的位置,只有少数例外。因此,除非另有指示,通常的做法是将所有内容都放在当前工作目录中。

        4
  •  0
  •   Peter Mortensen Sumit Kumar    6 年前

    如果您使用Qt Creator作为您的开发IDE,那么版本2现在在默认情况下启用“影子构建”,它的工作方式与您描述的完全相同,确实非常有用。

    它也是一个单独的复选框来打开或关闭它,这比visualstudio稍微简单一些。

        5
  •  -2
  •   codeshot    6 年前

    然后我们可以将构建签入到另一个分支,并将其签出到另一个位置以运行测试。