On Tue, 14 Aug 2018 02:03:28 +0300
Карелин Павел <[email protected]> wrote:
> I found a solution, but I would like to know how it is optimal:
Yes, that looks about right.
>
> Product {
> id: sonnetParseTrigrams
> //type: "application"
> type: ["application", "sonnet-parse-trigrams-run"]
> consoleApplication: true
> destinationDirectory: "./bin"
>
> name: "SonnetParseTrigrams"
> targetName: "sonnet_parsetrigrams"
>
> Depends { name: "cpp" }
> Depends { name: "SonnetCore" }
> Depends { name: "Qt"; submodules: ["core"] }
>
> cpp.defines: sonnet.cppDefines
>
> cpp.cxxLanguageVersion: "c++14"
> cpp.cxxFlags: sonnet.cxxFlags
>
> files: [
> "data/parsetrigrams.cpp"
> ]
>
> Group {
> fileTagsFilter: "application"
> fileTags: "sonnet-parse-trigrams"
> }
> }
>
> Product {
> type: "sonnet-parse-trigrams-run"
> name: "SonnetParseTrigramsRun"
> Depends { name: "SonnetParseTrigrams" }
> }
>
> Rule {
> inputs: ["sonnet-parse-trigrams"]
>
> // no inputs -> just a generator
> //multiplex: true
>
> Artifact {
> fileTags: ["sonnet-parse-trigrams-run"]
> filePath: FileInfo.joinPaths(product.destinationDirectory,
> "trigrams.map")
> }
> prepare: {
> var runUtl = input.filePath;
> var sourceDir = FileInfo.joinPaths(product.sourceDirectory,
> "data/trigrams");
> var outputFile =
> FileInfo.joinPaths(product.destinationDirectory, "trigrams.map");
>
> console.info("=== runUtl ===");
> 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;
>
> }
> }
>
>
> 13.08.2018 18:47, Карелин Павел пишет:
> >
> >
> > 13.08.2018 11:31, Christian Kandeler пишет:
> >> On Sun, 12 Aug 2018 22:56:31 +0300
> >> Карелин Павел<[email protected]> wrote:
> >>
> >>> I have a project in which, in addition to the main application,
> >>> auxiliary utilities are builded. In this regard, I have two questions:
> >>>
> >>> 1) How do I run an auxiliary utility right after his built, so that it
> >>> could generate necessary data?
> >> It works the same way as always: You trigger creation of the data by
> >> giving it some tag, and the tool's tag appears as some sort of input in
> >> the respective rule (which has the data as outputs).
> > That's the problem, that I do not have clear how to do it.
> > Not so long ago I made a rule for compiling cuda-files. Here is a
> > shortened version:
> >
> > Module {
> > id: cuda
> > Depends { name: "cpp" }
> >
> > FileTagger {
> > patterns: "*.cu"
> > fileTags: ["cuda"]
> > }
> >
> > Rule {
> > id: cudaCompiler
> > inputs: ["cuda"]
> > auxiliaryInputs: ["hpp"]
> >
> > Artifact {
> > fileTags: ["obj"]
> > filePath: FileInfo.joinPaths(".obj",
> > Utilities.getHash(input.baseDir), input.fileName + ".o")
> > }
> >
> > prepare: {
> > var args = [];
> > args.push(...);
> >
> > var cmd = new Command("/usr/bin/nvcuda", args);
> > cmd.description = 'cuda compiling ' + input.fileName;
> > cmd.highlight = "compiler";
> > return cmd;
> > }
> > }
> > }
> >
> > Everything is clear: there are files with the extension 'cu', the
> > files are connected to the project. And there is a cuda compiler:
> > /usr/bin/nvcuda.
> >
> > In the current project, instead of /usr/bin/nvcuda, the newly-built
> > utility should be used (call it sonnet_parsetrigrams). I do not
> > understand how to write it down. Also what should I write in the
> > FileTagger section? Files do not have an extension, these files are
> > not connected to the project. All that is - the name of the directory
> > in which these files are located. The call of the utility is as
> > follows: sonnet_parsetrigrams MyProjectDir/trigramsDir > trigrams.map
> >
> >>> 2) How to pass parameters to the auxiliary utility? The matter is that
> >>> the utility has one parameter - a directory name. It directory contains
> >>> text files without expansion, the utility has to process these files.
> >>> The output should be one file with the extension 'map'
> >> You rule has to take care of that when creating the Command.
> >>
> >>
> >> Christian
> >> _______________________________________________
> >> Qbs mailing list
> >> [email protected]
> >> http://lists.qt-project.org/mailman/listinfo/qbs
> >
> >
> >
> > _______________________________________________
> > Qbs mailing list
> > [email protected]
> > http://lists.qt-project.org/mailman/listinfo/qbs
>
_______________________________________________
Qbs mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qbs