Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Qbs:如何将命令输出保存到文件?_Qt_Gcc_Arm_Qt Creator_Qbs - Fatal编程技术网

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