问题标签 [parallel-builds]

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 投票
0 回答
413 浏览

boost - 如何使 b2 构建器默认为 -jN?

我想在默认情况下并行进行 boost 构建,例如,./b2 -j4我不想只调用./b2并让它使用-j4,或者-jN其他一些相关的 N 本身。

我可以这样做吗?我在想也许我可以以tools/build/src/user-config.jam某种方式加入,但我对它的工作原理还不够精通。

如果我不必手动输入一个值,而是nproc在构建之前动态地通过类似 , 来确定它,则可以加分。

0 投票
0 回答
569 浏览

maven-3 - 如何确保 Maven 插件是线程安全的

我的团队中开发的 maven 插件很少,而且这些插件没有标记为@threadSafe。我已经运行了大约 50 个工作,我没有看到不一致,但我想知道是否有办法以编程方式验证这一点。

什么是要寻找的东西会使插件对多线程不安全

0 投票
1 回答
1178 浏览

maven - Maven并行构建错误的顺序

我正在尝试通过并行处理加快我的 Maven 构建。该项目是具有嵌套模块的多模块。结构如下:

  • 父母
    • 米1
    • 平方米
    • 子父级(一个不生成工件的项目,而是一个包含供 m3 使用的资源的文件夹)
    • 立方米

编辑:现在我什至看到,至少有一次 m3 在子父级甚至开始之前完成了它的复制目标,因此在子父级开始清理之前使用了先前构建的结果。

如果我这样做mvn dependency:tree -Dverbose -Dincludes=my.packages.*了,我会看到子父级在 m3 的依赖项中正确列出。但是,有时(很少)并行构建会mvn -T 1C clean install失败,因为 m3 构建比子父级更早执行。

有没有强制执行命令的解决方法?我知道你不能直接设置它。问题是,我不能将子父级作为 m3 的依赖项,因为它没有工件。而且我不确定我是否需要它,因为依赖关系树显示 maven 知道这种依赖关系。

编辑:我添加了一个示例最小项目。https://github.com/Imaskar/build-order。除了子/密钥库需要换成真实的。有趣的是,这里的依赖树没有将 sub 显示为 m3 的依赖。尽管 sub 没有构建到 jar 文件中,如何告诉 m3 依赖它?

0 投票
2 回答
648 浏览

makefile - Makefile:为什么总是使用 `$(MAKE)` 而不是 `make`?

我通常使用高级构建系统cmake来构建我的 C/C++ 代码。但是由于各种原因,我使用的是直接 GNU make

我正在做递归构建,每个目录都有一个makefile。

我最近不得不将我所有的 makefile 从使用更改make$(MAKE),然后并行构建开始工作。

我读过的文献都说“总是使用$(MAKE)”(O'Reilly 的书,stackoverflow.com 上超过 10-40K 点的人的 5+ 解决方案)。

在您的 makefile 中,为什么总是使用$(MAKE)而不是make

(显然,一个原因是因为$(MAKE)以某种方式启用了并行构建。)

$(MAKE)除了用with的简单替换之外,还有更多的事情发生make吗?

0 投票
0 回答
92 浏览

c# - 为什么我的应用程序重复某些操作 4 次?

我使用 Visual Studio 2017。我使用 Windows 窗体应用程序、Visual C#。我的程序中有一个间隔为 30 秒的计时器。计时器从 Form_Load 事件方法开始。实际上,我将表单加载方法与其他一些按钮一起使用,已经进行了新设置,更改了用户等。程序在计时器滴答事件中将一些数据写入文本文件。我用它的发行版构建的 exe 测试我的应用程序。开始时,程序每 30 秒写入一次文本文件。但在程序运行一段时间后,它会执行 4 次,可能是 2 小时后。

示例代码:

实际上,还有一些其他的过程必须在定时器事件中完成。但它们不是关于附加文本文件。只有上面的代码是。所以你们能帮帮我吗?我对它为什么发生的想法是设置“使用并行构建”。在“工具 -> 选项 -> 项目和解决方案 -> 构建和运行”中,有一个选项“并行项目构建的最大数量”。我的设置是“4”。也许我应该做一些事情来让我的程序在这个设置为 4 的情况下正常运行。

这是图像:

VS 选项

我怎样才能让它正常工作?根据我的需要和编码的方式,每 30 秒写入一次文本文件。

编辑:我关闭并打开程序,它仅在 30 秒写入一次文本文件。它按应有的方式工作,因此与文本文件的大小无关。也许一段时间后计算机会创建另一个程序实例。可能吗?如果是,我可以用 Mutex 做对吗?

0 投票
1 回答
210 浏览

qmake - QMake / jom 强制额外的 MIDL 编译器在 RC 之前运行

我正在将一个旧的 OCX 项目转换为 QMake(因为它在我的公司中获得了“新”标准)。在我的 Button.pro 文件中,我通过以下方式添加 MIDL 编译器

.pro 文件还提到我有一个 RC 文件

此 RC 文件包含此 tlb 文件的 TYPELIB,这意味着它必须在rc.exe 运行之前可用

然后我通过 QMake 生成一个 makefile 并使用 nmake 构建我的项目。一切运行正常:控制台没有显示错误,并且生成了输出 OCX(并且可以正常工作)。我可以清楚地看到 MIDL 首先执行,RC,然后是其余的。如果我尝试使用 jom 构建,订单将不再满足。jom 似乎尝试并行执行 MIDL 和 RC:在 RC.exe 需要它并且构建失败时,Button.tlb 还不存在。

有没有办法强制 jom 在开始 rc 之前等待 midl 完成?

我在 MSVC2013 下使用 QT 5.3.1。

0 投票
1 回答
521 浏览

c++ - Visual Studio中的c ++并行构建行为

我观察到具有多个具有多个源文件的项目的 C++ Visual Studio (VS) 2017 解决方案可能不会在单个项目中并行构建。另一方面,项目总是并行构建的。特别是我还发现,当从 CMake 生成 VS 解决方案时,当解决方案中有多个项目时,一个项目内的源文件很可能不会并行构建。从几个 StackOverflow 问题和 MSDN 中,我可以看到我们可以在 VS 中设置并行构建,但它不控制 VS 是否会在一个内构建源文件项目也是并行的。有人可以向我解释如何设置它,以便 VS 在所有情况下始终在一个项目中并行构建源文件吗?或者有可能做到吗?

我的典型 VS 解决方案之一包含约 100 个项目。每个项目包含 2~30 个 .cpp/.h 文件。

编辑:

我的问题与 Visual Studio 中相互依赖的项目的并行编译不同。我想知道当解决方案中存在多个项目时,是否有办法控制单个项目中并行构建的行为。另一方面,引用的问题与解决方案中具有依赖关系的项目的并行构建问题有关。

EDIT2(回答我的问题):

经过长时间的排查,我终于弄清楚是什么原因导致解决方案无法并行构建的问题。正如我上面提到的,我的问题与启用某些与并行构建相关的开关(例如 /MP、# 要使用的线程等)无关。对于那些遇到同样问题的人,我会在这里解释一下。原因很简单。我在项目配置中使用了 Visual Studio 环境变量。我使用的变量是 %(Filename)。在执行 cl.exe 命令之前,Visual Studio 会将所有这些变量转换为它们的实际值。结果,每个源文件都将具有不同的编译选项,尽管它们都具有相同的属性表中的选项“%(文件名)”。如果同一项目中的两个源文件没有相同的编译选项,它们将不会并行构建。总之,谨慎使用环境变量,尽可能消除编译选项的差异。

0 投票
2 回答
576 浏览

java - 并行运行 maven 测试而不等待兄弟模块依赖项

我有一个多模块 maven 项目,其中模块之间有很多依赖关系。我曾尝试并行运行我的测试,但由于模块没有经过深思熟虑并且彼此高度依赖,我基本上没有时间获得,因为它们最终仍然按顺序执行。

现在,在完全运行测试之前,我有一个构建项目的阶段,以便我可以将其他静态分析工具并行应用于我的测试。

我的问题是:鉴于我的模块已经编译,我可以不告诉 maven 使用这些预编译的类并行运行测试,而不是等待依赖模块先运行它们的测试吗?例如,目前如果我有一个依赖于模块 B 的模块 A,模块 B 将在 A 启动之前先执行其所有测试。由于我已经构建了 A 和 B,因此我无需保留此限制。

我目前运行测试的方式类似于: mvn -f project-parent/pom.xml surefire:test其中项目父级是一个模块,它是我所有其他模块的父级。为简洁起见,我省略了配置文件和其他参数。

谢谢!

编辑:此时我试图避免使用junit或surefire来避免类/套件级别的并行化,并且只想以并行方式测试模块。

0 投票
1 回答
101 浏览

visual-studio - 并行工作者中的 vcvars 文件访问被拒绝

我有时会在 gitlab ci-cd worker 日志中遇到这种错误。

如何修复它并为 MSVC 项目设置并行构建?

0 投票
0 回答
105 浏览

aws-codebuild - 在 codebuild 中运行并行构建

我正在尝试使用批处理列表功能在代码构建中并行运行命令,但是,我无法让它按预期工作。这些命令是按顺序执行的,而不是并行执行的。下面是构建规范文件。

谁能指导我我做错了什么或我在这里错过了什么。

PS:这只是一个示例构建规范。