Qt Qbs:如何将命令输出保存到文件?
我想知道反汇编程序文件是在每次构建之后创建的。 此命令将执行以下操作:Qt Qbs:如何将命令输出保存到文件?,qt,gcc,arm,qt-creator,qbs,Qt,Gcc,Arm,Qt Creator,Qbs,我想知道反汇编程序文件是在每次构建之后创建的。 此命令将执行以下操作: arm-none-eabi-objcopy -DS project.elf > project.dasm 如何使用qbs执行它?试着为它做一个规则 Rule { id: dasm inputs: "application" Artifact { fileTags: ["dasm"] filePath: FileInfo.baseName(input.filePa
arm-none-eabi-objcopy -DS project.elf > project.dasm
如何使用qbs执行它?试着为它做一个规则
Rule {
id: dasm
inputs: "application"
Artifact {
fileTags: ["dasm"]
filePath: FileInfo.baseName(input.filePath) + ".dasm"
}
prepare: {
var args = ["-DS", input.filePath, ">", output.filePath];
var cmd = new Command("arm-none-eabi-objdump", args);
cmd.description = "disassembler from: "+FileInfo.fileName(input.filePath);
cmd.highlight = "linker";
cmd.silent = true;
return cmd;
}
}
但这只是在构建控制台中显示结果,并显示最后两个参数的错误。有什么想法吗?我认为在qbs中不能使用输出管道。这些(
,
,|
)将无法工作,因为命令
不是bash shell<代码>命令正在将
作为参数传递给arm none eabi objcopy。您可能希望创建如下所示的shell脚本:
myShellScript.sh
#!/bin/bash
arm-none-eabi-objcopy -DS $1 > $2
然后在您的规则中,只需调用shell脚本
Rule {
id: dasm
inputs: "application"
Artifact {
fileTags: ["dasm"]
filePath: FileInfo.baseName(input.filePath) + ".dasm"
}
prepare: {
var args = [input.filePath, output.filePath];
var cmd = new Command("myShellScript.sh", args);
cmd.description = "disassembler from: "+FileInfo.fileName(input.filePath);
cmd.highlight = "linker";
cmd.silent = true;
return cmd;
}
}
}
我认为在qbs中不能使用输出管道。这些(
,
,|
)将无法工作,因为命令
不是bash shell<代码>命令正在将
作为参数传递给arm none eabi objcopy。您可能希望创建如下所示的shell脚本:
myShellScript.sh
#!/bin/bash
arm-none-eabi-objcopy -DS $1 > $2
然后在您的规则中,只需调用shell脚本
Rule {
id: dasm
inputs: "application"
Artifact {
fileTags: ["dasm"]
filePath: FileInfo.baseName(input.filePath) + ".dasm"
}
prepare: {
var args = [input.filePath, output.filePath];
var cmd = new Command("myShellScript.sh", args);
cmd.description = "disassembler from: "+FileInfo.fileName(input.filePath);
cmd.highlight = "linker";
cmd.silent = true;
return cmd;
}
}
}
在Qbs 1.5.0中,您可以使用新的
stdoutFilePath
和stderfilepath
将命令输出重定向到文件
例如:
Rule {
id: dasm
inputs: ["application"]
Artifact {
fileTags: ["dasm"]
filePath: input.baseName + ".dasm"
}
prepare: {
var args = ["-DS", input.filePath];
var cmd = new Command("arm-none-eabi-objdump", args);
cmd.description = "disassembling " + input.fileName;
cmd.stdoutFilePath = output.filePath;
cmd.highlight = "linker";
cmd.silent = true;
return cmd;
}
}
在Qbs 1.5.0中,您可以使用新的
stdoutFilePath
和stderfilepath
将命令输出重定向到文件
例如:
Rule {
id: dasm
inputs: ["application"]
Artifact {
fileTags: ["dasm"]
filePath: input.baseName + ".dasm"
}
prepare: {
var args = ["-DS", input.filePath];
var cmd = new Command("arm-none-eabi-objdump", args);
cmd.description = "disassembling " + input.fileName;
cmd.stdoutFilePath = output.filePath;
cmd.highlight = "linker";
cmd.silent = true;
return cmd;
}
}