问题标签 [incremental-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
11061 浏览

visual-studio-2010 - 文件跟踪器日志文件格式

在 Visual Studio 2010 中,增量构建是使用文件跟踪器 (Microsoft.Build.Utilities.FileTracker) 完成的。似乎它负责在中间目录上创建这些 *.1.tlog 文件。

我找不到对这些 .tlog 文件语法的任何引用。
它们包含在跟踪器跟踪某些工具的执行时读取/写入的文件的路径列表,以检查应在增量构建中编译哪些文件。但是,这些文件也包含一些特殊字符,例如“^”和“|”。
我注意到的另一件事是,这些文件有时是从 Visual Studio 目标文件中编辑的。例如,在 CustomBuildStep 目标上的 Microsoft.CppCommon.targets 中,我找到了以下行:

所以这可能意味着项目文件依赖于自定义构建步骤输出。

我的问题是:

  • 有谁知道 .tlog 文件语法的参考?
  • 在哪些情况下在 Visual Studio 上使用跟踪日志?我知道 CL 和可能使用它的 Link 任务,但似乎 Visual Studio IDE 本身使用它来决定是否为某个项目运行 msbuild。

谢谢


编辑

另一个提示:

CanonicalTrackedInputFiles Class文档是“ .read 的文件跟踪日志解释器。跟踪规范形式的日志或那些已经植根 (^) 以使其成为规范的日志
当我有时间时,我会再深入研究一下。也许这个类和Microsoft.Build.Utilities下的其他类可以用来帮助我们处理 tlog 文件,而不是直接处理原始文本 tlog 文件。

另请参阅:CanonicalTrackedOutputFiles ClassFlatTrackingData Class当然还有FileTracker Class

0 投票
1 回答
592 浏览

eclipse-plugin - 使用 Eclipse 构建 DSL 时,增量编译的最佳方法是什么?

正如 Eclipse 文档所建议的那样,我有一个org.eclipse.core.resources.IncrementalProjectBuilder可以编译每个源文件的文件,并且我也有一个org.eclipse.ui.editors.text.TextEditor可以单独编辑每个源文件的文件。每个源文件都被编译到自己的编译单元中,但它可以引用其他(已经编译的)源文件的类型。

两个重要的任务是:

  1. 编译(以确保我们使用的类型确实存在)
  2. 自动完成(查找类型,以便我们查看其上存在哪些属性/方法)

为此,我想将所有已编译类型的表示形式存储在内存中(以下称为我的“类型存储”)。

我的问题有两个:

  1. 上面的任务一由构建器执行,任务二由编辑器执行。为了让他们都可以访问这种类型的商店,我应该在他们都可以访问的地方创建一个静态商店,还是 Eclipse 提供了一种更简洁的方法来处理这个问题?请注意,在需要时实例化构建器和编辑器的是 eclipse,而不是我。

  2. 打开 Eclipse 时,我不想重建整个项目,这样我就可以重新填充我的类型存储。到目前为止,我最好的解决方案是将这些数据保存在某个地方,然后从中重新填充我的商店(也许在项目打开时)。这是其他增量编译器通常这样做的方式吗?我相信 Java 的方法是使用一种特殊的解析器,可以有效地从类文件中提取这些数据。

任何见解将不胜感激。这是我的第一个 DSL。

0 投票
2 回答
6238 浏览

java - Maven增量构建

我们目前有一个大型 Maven 2 项目,它是许多具有复杂依赖关系的单个独立项目的集合,除了一些用于构建的公共父 POM 之外。最后,我们总是必须将应用程序作为一个整体交付,所以我宁愿将其转换为一个或几个大项目。

有没有人在如何优化大型项目的持续集成构建方面有经验。Maven 或 Hudson 的增量构建功能有什么好处吗?我不希望在一个模块中只进行小的更改时总是等待 2 小时。

另一方面,可以肯定的是,您总是必须至少重新构建和重新测试已更改模块的所有直接和间接依赖项。这也是我们目前对 Hudson 所做的事情,自动触发所有相关作业。

将同一个项目拆分为多个构建作业是否有回报?我通常不喜欢在服务器上放置所有其他生成的东西(如报告、文档等)可能已经过时的工件。

感谢您的任何想法。

0 投票
3 回答
456 浏览

c++ - C++ header-implementation-header-implementation 依赖链

我正在尝试使用依赖解析器创建简单的 C++ 增量构建工具。我一直对 cpp 构建过程的一个问题感到困惑。想象一下,我们有一个包含几个文件的库:

在包含 h1.h 的客户端代码中时

s2.cpp 实现存在隐式依赖关系:our_src -> h3 -> s1 -> h2 -> s2。所以我们需要链接两个obj文件:

相比之下,当 h3.h 包含

只有一个源依赖:our_src -> h3 -> s2

因此,当我们包含 h3.h 时,我们只需要编译 s2.cpp(尽管包含 s1.cpp -> h2.h):

这是一个非常简单的问题示例,在实际项目中,我们肯定有数百个文件,而低效的包含链可能包含更多文件。

所以我的问题是:当我们检查依赖项(没有 CPP 解析)时,有没有办法或工具来找出可以省略哪些标头包含?

我会很感激任何回应。

0 投票
1 回答
959 浏览

c++ - 什么时候完全构建,什么时候部分构建?

嗨,我想知道什么时候需要完整构建,什么时候部分构建就足够了。有很多文章,但我无法找到具体的答案。

以下是我的想法

在以下情况下需要完整构建:

1.改变依赖模块的构建。

---改变构建选项或使用优化技术。

2.对象布局的变化:

---头文件中的任何更改,添加和删除类中的新方法。

---通过添加或删除变量或虚拟函数来改变对象大小。

--- 使用 pragma pack 更改数据对齐方式。

3.全局变量的任何变化

在以下情况下,部分构建就足够了:

1.任何逻辑上的改变,只要不改变指定的接口

2.堆栈变量的变化

0 投票
2 回答
422 浏览

compilation - Agda 可以在批处理模式下更快地编译吗?

当我编译一个使用标准库的 Agda 程序时,编译器会花费很长时间打印出如下行:

我猜它安全“跳过”它们的原因是它们已经编译(目录中已经有 .agdai 文件)。但它仍然会花费大量时间跳过它们,并且编译需要一分钟以上。

有没有办法在每次编译时避免所有这些额外的工作?

0 投票
1 回答
1200 浏览

eclipse - Eclipse 中的 Maven:增量构建

我已经环顾了一段时间,找不到在 Eclipse 中增量构建 Maven 的明确方法。

目前,每次我进行更改时,Maven 都会生成一个 .war 文件,这在常规构建过程中需要一些时间来编译。

什么是加快速度并将增量更改复制到目录中的最简单方法?


我的 pom.xml 文件:

0 投票
1 回答
11951 浏览

maven - Jenkins 中的增量构建

我使用的是 Jenkins 1.462,maven 版本是 3.0.4。在 Jenkins,我启用了复选框“增量构建 - 仅构建更改的模块”

我想弄清楚2个问题:

  1. 增量构建是否足够? 在这里,如何在 Subversion 的多模块 Maven 构建中触发单个模块的 Jenkins 构建?例如,声明它不能 100% 工作 这里http://www.slideshare.net/andrewbayer/7-habits-of-highly-effective-jenkins-users在第 19 页声明增量构建是对完整构建,而不是替换。

  2. 增量构建 - 仅构建更改的模块实际上是否按预期工作? 我这是什么意思?如果我有模块 A、B、X、C、D。X 使用 A 和 B,C 使用 X,D 使用 C,我在 X 模块中进行更改。比我想重新编译模块 X (itslef)、C (直接使用 X) 和 D (在传递闭包中;D 使用 C,使用 C)。

注意:这是我为启用增量构建所做的唯一更改。

0 投票
1 回答
368 浏览

msbuild - MSBuild 增量构建错误

我在构建 .NET 解决方案输出并将其复制到部署文件夹时遇到了一个问题。

我想做的是。构建解决方案并将输出放入 C:\TempOutput

然后将输出文件从 C:\TempOutput 复制到另一个部署文件夹。

在第一次尝试时,它在 C:\TempOutput 中创建文件夹并在此文件夹中创建输出 dll 和 exe

它还创建文件夹“Exec\Debug\Bin”,但不从 C:\TempOutput 复制文件

日志说

目标 CopyBuildFiles:跳过目标“CopyBuildFiles”,因为它没有输出。

当我这次再次运行脚本时,它会将文件从 C:\TempOutput 复制到“Exec\Debug\Bin”

我错过了什么吗?为什么它在第一次尝试时没有检测到输出?

以下是 msbuild 脚本

0 投票
1 回答
239 浏览

asp.net-mvc - TFS 和 MVC 项目的最佳实践 - 仅部署更改

我为一家公司管理了几个网站,他们希望我过渡到 TFS。作为他们政策的一部分,我只能部署自上次部署以来已更改的文件。即,如果视图已更改,则将其部署,如果未更改,则它不是部署包的一部分。他们使用自动化工具进行部署。

目前,我使用自己编写的自定义工具连接到我的本地源提供程序 (Vault Pro) 并查找给定日期的所有更改并将这些文件复制到 zip 文件中。

如何使用 Team Foundation Server 完成类似的任务?