Qbs:如何将命令输出保存到文件中?

时间:2015-10-17 06:48:10

标签: qt gcc arm qt-creator qbs

我想在每次构建后创建反汇编文件。 此命令将执行此操作:

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;
}

但这只是在构建控制台中显示结果并在最后两个参数上显示错误。有什么想法吗?

2 个答案:

答案 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中,您可以使用新的stdoutFilePathstderrFilePath 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;
    }
}