VS2022与Premake:为自定义FASM规则添加并行构建支持
解决Premake中FASM汇编文件并行构建的问题
一、直接用Premake脚本开启并行
Premake的自定义规则默认没开启并行,你只需要在定义FASM规则的时候,加一行parallelBuild "true"就行。比如你的规则脚本可以改成这样:
rule "FASM" display "FASM Assembler" fileExtension ".asm" buildmessage "Assembling %{file.name}" buildcommands { "fasm.exe %{file.relpath} %{cfg.objdir}/%{file.basename}.obj" } buildoutputs { "%{cfg.objdir}/%{file.basename}.obj" } -- 关键:打开并行构建开关 parallelBuild "true"
这样生成的项目里,FASM规则就会带上并行选项,和手动改“自定义生成”的效果一致。
二、手动修改生成的规则文件(脚本配置无效时用)
如果上面的脚本设置没起作用,直接改Premake生成的.rules文件(比如FASM.rules):
- 找到文件里的
<Rule>节点 - 添加上
<ParallelBuild>true</ParallelBuild>,放在<Outputs>附近即可,比如:
<Rule Name="FASM" DisplayName="FASM Assembler"> <!-- 其他原有配置 --> <Outputs>$(IntDir)\%(Filename).obj</Outputs> <ParallelBuild>true</ParallelBuild> </Rule>
保存后重新加载项目,asm文件就能并行构建了。
三、换个方式:把asm文件设为自定义生成项
要是不想单独维护FASM规则,也可以直接把asm文件当成自定义生成项来添加,不用单独定义规则:
files "*.asm" filter "files:**.asm" buildmessage "Assembling %{file.name}" buildcommands { "fasm.exe %{file.relpath} %{cfg.objdir}/%{file.basename}.obj" } buildoutputs { "%{cfg.objdir}/%{file.basename}.obj" } parallelBuild "true"
这种方式生成的项目里,asm文件会用VS默认的“自定义生成”类型,自带并行选项,省得折腾自定义规则。
内容的提问来源于stack exchange,提问作者raff
相关产品推荐
相关产品推荐

