Oli*_*ver 17 build-process makefile gnu-make
什么设置适用于GNU在Windows上进行并行作业(-j)?
我已经尝试使用MinGW make 3.81将shell设置为cmd.exe,这适用于创建多个进程但是使用"等待作业"消息失败.
这可以工作,什么是最好的设置?(MinGW/Cygwin/???)有人能指出一个可以测试的工作示例吗?
可能对 CMake 用户有帮助的提示
当 makefile 像 cmake-makefiles 通常那样递归调用 make 时,-jN 选项不起作用。但是有一个补救措施可以再次起作用,因为在生成的 makefile 中,CMake 通过这样的语法进行调用。
$(MAKE) -f CMakeFiles\Makefile2 <subproject>
Run Code Online (Sandbox Code Playgroud)
这意味着您可以修改变量 MAKE:
mingw32-make "MAKE=mingw32-make -j3"
Run Code Online (Sandbox Code Playgroud)
现在,每次启动 subproject-make 时,它都会再次获得“-j3”选项。但请注意,这实际上不会将并行编译的数量限制为 3,正如您所期望的那样。如果您有 3 个以上的项目,并且在同一层次结构上彼此不依赖,则所有 3 个项目将并行构建,并且每个项目都会启动 3 个编译步骤。导致 9 个并行编译步骤。
当我们再次仔细查看由 cmake 生成的顶部 Makefile 时,我们会发现目标“all”本质上只启动一个子 make。
$(MAKE) -f CMakeFiles\Makefile2 all
Run Code Online (Sandbox Code Playgroud)
因此我们可以通过调用删除一层子项目并行性
mingw32-make "MAKE=mingw32-make -j3" -f CMakeFiles\Makefile2 all
Run Code Online (Sandbox Code Playgroud)
但这牺牲了进度报告。
尽管如此,我希望这会有所帮助。
我在 Cygwin 下使用从来没有遇到过任何问题make -jn。它运作得相当好。我经常将它与微软的cl.exe编译器一起使用。它对我来说开箱即用。非常像 UNIX,这是一件好事™。构建可以很好地移植到 Linux 和 Mac 的脚本。彻底推荐。
自从我遇到 5 个反斜杠太少,但 6 个反斜杠又太多的地方以来,我一直不喜欢 MinGW make。叹!(与 MinGW hacks 一起使用 make AFAIK 中允许反斜杠分隔的路径名。)
| 归档时间: |
|
| 查看次数: |
11557 次 |
| 最近记录: |