[Qbs] Build and run a AuxiliaryApplication before build a MainApplication
Карелин Павел
hkarel at yandex.ru
Wed Feb 10 09:48:55 CET 2021
This morning I tried the following solution (see below). got this error
:-1: ошибка: The process
'/home/hkarel/CProjects/QGit/build/Debug/bin/sonnet_parsetrigrams'
could not be started: execve: Permission denied.
The full command line invocation was:
/home/hkarel/CProjects/QGit/build/Debug/bin/sonnet_parsetrigrams
/home/hkarel/CProjects/QGit/src/spellcheck/sonnet/trigrams
/home/hkarel/CProjects/QGit/build/Debug/trigrams.map
I assumed that the sonnet_parsetrigrams helper appl would be built
earlier than needed in the idtrigrams rule, but that didn't work.
--- qgit_project.qbs ---
import qbs
import "qbs/imports/QbsUtl/qbsutl.js" as QbsUtl
Project {
name: "QGit (Project)"
minimumQbsVersion: "1.18.0"
qbsSearchPaths: ["qbs"]
...
references: [
"src/qgit.qbs",
"src/spellcheck/sonnet/parsetrigrams.qbs",
]
}
--- parsetrigrams.qbs ---
import qbs
import qbs.FileInfo
Product {
name: "SonnetParseTrigrams"
targetName: "sonnet_parsetrigrams"
condition: true
type: "application"
destinationDirectory: "./bin"
Depends { name: "cpp" }
Depends { name: "Qt"; submodules: ["core"] }
cpp.defines: project.cppDefines
cpp.cxxFlags: project.cxxFlags
cpp.cxxLanguageVersion: project.cxxLanguageVersion
// This declaration is needed to suppress Qt warnings
cpp.systemIncludePaths: Qt.core.cpp.includePaths
files: [
"parsetrigrams.cpp"
]
}
--- qgit.qbs ---
import qbs
import qbs.FileInfo
Product {
name: "QGit"
targetName: "qgit"
type: "application"
destinationDirectory: "./bin"
Depends { name: "cpp" }
Depends { name: "SonnetParseTrigrams" }
Depends { name: "Qt"; submodules: ["core", "widgets"] }
....
Group {
fileTags: "trigrams"
//files: FileInfo.joinPaths(project.buildDirectory, "*.trgmap")
//files: "spellcheck/sonnet/trigrams/*.trg"
files:
"/home/hkarel/CProjects/QGit/src/spellcheck/sonnet/trigrams/*"
}
Group {
fileTagsFilter: ["trigrams-map"]
//fileTagsFilter: ["sonnet-parse-trigrams-run"]
fileTags: ["qt.core.resource_data"]
}
Qt.core.resourceFileBaseName: "trigrams1"
Qt.core.resourcePrefix: "trigrams1"
Rule {
inputs: ["trigrams"]
multiplex: true
Artifact {
fileTags: ["trigrams-map"]
filePath: FileInfo.joinPaths(product.buildDirectory,
"trigrams.map")
}
prepare: {
//var runUtl = input.filePath;
var runUtl = FileInfo.joinPaths(project.buildDirectory,
"bin/sonnet_parsetrigrams");
var sourceDir = FileInfo.joinPaths(product.sourceDirectory,
"spellcheck/sonnet/trigrams");
var outputFile = FileInfo.joinPaths(project.buildDirectory,
"trigrams.map");
console.info("=== runUtl ===");
console.info(input);
console.info(inputs);
console.info(runUtl);
console.info(sourceDir);
console.info(outputFile);
var cmd = new Command(runUtl, [sourceDir, outputFile]);
cmd.description = "sonnet parse trigrams";
cmd.highlight = "filegen";
return cmd;
}
}
}
--
Pavel
09.02.2021 20:33, Карелин Павел пишет:
>
>
> 09.02.2021 16:06, Christian Kandeler пишет:
>> On 2/9/21 1:04 PM, Карелин Павел wrote:
>>> Hello!
>>>
>>> I need to build components of the project in a specific sequence:
>>> 1) Build of auxiliary generator program;
>>> 2) Generate a resource file using the generator received in step 1;
>>> 3) Add the resource file obtained in step 2 to project QRC-file;
>>> 4) Build the main project program with the QRC-file obtained in step 3.
>>>
>>> I previously asked a similar question
>>> (https://lists.qt-project.org/pipermail/qbs/2018-August/002223.html),
>>> and how to perform steps 1, 2 I know roughly. However, this decision
>>> seems to me to be somewhat confusing (not transparent),
>>> so I wanted to know maybe at the moment there is a simpler
>>> (transparent) solution.
>>>
>>> I have no understanding of how, after points 1,2 to be followed
>>> points 3 and 4, so I ask for help with the solution.
>>
>> If by "add the resource file" you mean you have a hand-written qrc
>> file and you want to merge a generated file into it, then that's not
>> possible (unless you do the merging "manually" in a dedicated rule
>> and tag the result afterwards). However, if you do it "correctly" by
>> having the qrc file be auto-generated from files tagged as resource
>> data, then the whole thing is straightforward.
>>
>> You might want to tell us what exactly you are struggling with and
>> why, so it becomes easier to help.
> Yes, I do not particularly struggle with anything:) This task can be
> solved in another way (without a resource file). I was just interested
> in trying out QBS capabilities. Perhaps in the future there will be a
> problem that can only be solved in this way.
>
> Here is my task: I am making a mechanism for checking spelling. The
> mechanism requires a map of language trigrams. The trigram map is
> generated from trigram files
> (https://github.com/hkarel/qgit/tree/3x-spellcheck/src/spellcheck/sonnet/trigrams).
> This work is just done by the utility "AuxiliaryApplication." Next, I
> planned to add this trigram map to the program as a resource.
>
> Regarding auto-generated qrc file: if such a generated file can be
> used together with the manual qrc file, then I will totally agree such
> a solution.
>
>>
>>
>> Christian
>>
>> _______________________________________________
>> Qbs mailing list
>> Qbs at qt-project.org
>> https://lists.qt-project.org/listinfo/qbs
>
> _______________________________________________
> Qbs mailing list
> Qbs at qt-project.org
> https://lists.qt-project.org/listinfo/qbs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20210210/e16a1739/attachment-0001.html>
More information about the Qbs
mailing list