我想在每次构建后创建反汇编文件。 此命令将执行此操作:
nMatrix[][]
如何用qbs执行它?试图为它做一个规则。
#include<stdio.h>
int inputMatrix(int **matrix , int row, int column)
{
int i, j, nonZero = 0;
printf("\n Enter the elements of the matrix : \n");
for(i=0; i<row; i++)
{
for(j=0; j<column; j++)
{
scanf("%d",&matrix[i][j]);
if(matrix[i][j]!=0)
nonZero++;
}
}
return nonZero;
}
int main()
{
int nMatrix[10][10], sMatrix[10][3], nr, nc, i, j, ch, nonZero;
// input the matrix in normal form
printf("\n Enter the number of rows : ");
scanf("%d",& nr);
printf("\n Enter the number of columns : ");
scanf("%d",&nc);
nonZero = inputMatrix(nMatrix,nr,nc);
return 0;
}
但这只是在构建控制台中显示结果并在最后两个参数上显示错误。有什么想法吗?
答案 0 :(得分:0)
我认为你不能在qbs中使用输出管道。这些(<%@ PreviousPageType VirtualPath ="~/PreviousPage.aspx" %>
,>
,>>
)无法正常工作,因为|
不是bash shell。 Command
正在传递Command
作为arm-none-eabi-objcopy的参数。您可能想要创建一个这样的shell脚本:
myShellScript.sh
>
然后在你的规则中调用shell脚本。
#!/bin/bash
arm-none-eabi-objcopy -DS $1 > $2
答案 1 :(得分:0)
在Qbs 1.5.0中,您可以使用新的stdoutFilePath
和stderrFilePath
properties on the Command object将命令输出重定向到文件。
例如:
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;
}
}