gpt4 book ai didi

qt - Qbs 构建规则如何使用产品

转载 作者:行者123 更新时间:2023-12-04 23:55:23 30 4
gpt4 key购买 nike

我想使用 Qbs 编译现有项目。此项目已包含在此项目中大量使用的代码转换工具 (my_tool)。

到目前为止,我已经(简化):

import qbs 1.0

Project {
Application {
name: "my_tool"
files: "my_tool/main.cpp"
Depends { name: "cpp" }
}

Application {
name: "my_app"
Group {
files: 'main.cpp.in'
fileTags: ['cpp_in']
}
Depends { name: "cpp" }

Rule {
inputs: ["cpp_in"]
Artifact {
fileName: input.baseName
fileTags: "cpp"
}
prepare: {

var mytool = /* Reference to my_tool */;

var cmd = new Command(mytool, input.fileName, output.fileName);
cmd.description = "Generate\t" + input.baseName;
cmd.highlight = "codegen";
return cmd;
}
}
}
}

如何获得对 my_tool 命令的引用?

最佳答案

这个答案基于 Qbs 作者 Joerg Bornemann 的一封电子邮件,他允许我在这里引用它。

属性(property)usings of Rule 允许将产品依赖项中的工件添加到输入中。
在这种情况下,我们对“应用程序”工件感兴趣。

然后可以通过 input.application 访问应用程序列表。 .

Application {
name: "my_app"
Group {
files: 'main.cpp.in'
fileTags: ['cpp_in']
}
Depends { name: "cpp" }

// we need this dependency to make sure that my_tool exists before building my_app
Depends { name: "my_tool" }

Rule {
inputs: ["cpp_in"]
usings: ["application"] // dependent "application" products appear in inputs
Artifact {
fileName: input.completeBaseName
fileTags: "cpp"
}
prepare: {
// inputs["application"] is a list of "application" products
var mytool = inputs["application"][0].fileName;
var cmd = new Command(mytool, [inputs["cpp_in"][0].fileName, output.fileName]);
cmd.description = "Generate\t" + input.baseName;
cmd.highlight = "codegen";
return cmd;
}
}
}

关于qt - Qbs 构建规则如何使用产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173825/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com