[Qbs] Build and run a AuxiliaryApplication before build a MainApplication

Карелин Павел hkarel at yandex.ru
Mon Feb 22 17:07:16 CET 2021


Christian, I experimented a little, and got another variant.

Your variant (clarification: the generation of trigrams in binary form 
is performed by the parsetrigrams utility) :

Product {
     name: "ParseTrigrams"
     targetName: "parsetrigrams"

     type: ["application"]
     ...
     files: [
         "parsetrigrams.cpp"
     ]

     Group {
         fileTagsFilter: "application"
         fileTags: "trigrams-generator"
     }
}

Product {
     name: "QGit"
     targetName: "qgit"

     type: "application"

     Depends { name: "cpp" }
     Depends { name: "ParseTrigrams" }
     Depends { productTypes: ["trigrams-generator"] }
     Depends { name: "Qt"; submodules: ["core", "widgets"] }

     Group {
         fileTags: "trigrams"
         files: FileInfo.joinPaths(product.sourceDirectory, 
"spellcheck/sonnet/trigrams/*")
     }

     Group {
         fileTagsFilter: ["trigrams-map"]
         fileTags: ["qt.core.resource_data"]
     }
     Qt.core.resourceFileBaseName: "trigrams"
     Qt.core.resourcePrefix: "trigrams"

     Rule {
         id: idtrigrams
         inputs: ["trigrams"]
         explicitlyDependsOnFromDependencies: ["trigrams-generator"]

         Artifact {
             fileTags: ["trigrams-map"]
             filePath: FileInfo.joinPaths(project.buildDirectory, 
"trigrams", input.baseName + ".tmap")
         }
         prepare: {
             var runUtl = 
explicitlyDependsOn["trigrams-generator"][0].filePath
             var outputFile = FileInfo.joinPaths(project.buildDirectory, 
"trigrams", input.baseName + ".tmap");

             var cmd = new Command(runUtl, [input.filePath, outputFile]);
             cmd.description = "sonnet parse trigrams";
             cmd.highlight = "filegen";
             return cmd;
         }
     }

     files: [
         "qgit.cpp",
     ]
}

My variant:

Product {
     name: "ParseTrigrams"
     targetName: "parsetrigrams"

     type: ["application", "trigrams-generator"]
     ...
     files: [
         "parsetrigrams.cpp"
     ]
     Group {
         fileTagsFilter: "application"
         fileTags: "trigrams-generator"
     }
}

Product {
     name: "QGit"

     type: "application"

     Depends { name: "cpp" }
     Depends { productTypes: ["trigrams-generator"] }
     Depends { name: "Qt"; submodules: ["core", "widgets"] }

     Group {
         fileTags: "trigrams"
         files: FileInfo.joinPaths(product.sourceDirectory, 
"spellcheck/sonnet/trigrams/*")
     }

     Group {
         fileTagsFilter: ["trigrams-map"]
         fileTags: ["qt.core.resource_data"]
     }
     Qt.core.resourceFileBaseName: "trigrams"
     Qt.core.resourcePrefix: "trigrams"

     Rule {
         id: idtrigrams
         inputs: ["trigrams"]
         explicitlyDependsOnFromDependencies: ["trigrams-generator"]

         Artifact {
             fileTags: ["trigrams-map"]
             filePath: FileInfo.joinPaths(project.buildDirectory, 
"trigrams", input.baseName + ".tmap")
         }
         prepare: {
             var runUtl = 
explicitlyDependsOn["trigrams-generator"][0].filePath
             var outputFile = FileInfo.joinPaths(project.buildDirectory, 
"trigrams", input.baseName + ".tmap");

             var cmd = new Command(runUtl, [input.filePath, outputFile]);
             cmd.description = "sonnet parse trigrams";
             cmd.highlight = "filegen";
             return cmd;
         }
     }

     files: [
         "qgit.cpp",
     ]
}

The differences are as follows:
For ParseTrigrams:
     type: ["application"]
vs
     type: ["application", "trigrams-generator"]

For QGit:
     Depends { name: "ParseTrigrams" }
     Depends { productTypes: ["trigrams-generator"] }
vs
     Depends { productTypes: ["trigrams-generator"] }


I would like to know if there is a fundamental difference in these 
solutions, and which variant is preferable?

--
BR, Pavel



22.02.2021 13:00, Christian Kandeler пишет:
> On 2/19/21 5:43 PM, Карелин Павел wrote:
>> Project QGit__micro is attached.
>> The situation is reproduced 
>
> I've attached the corrected qbs files.
>
>
>
> Christian
>
>
> _______________________________________________
> 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/20210222/c2c2b800/attachment.html>


More information about the Qbs mailing list