From ashashev at gmail.com Sat May 7 16:14:18 2016 From: ashashev at gmail.com (=?UTF-8?B?0JDQu9C10LrRgdC10Lkg0KjQsNGI0LXQsg==?=) Date: Sat, 7 May 2016 17:14:18 +0300 Subject: [QBS] Some questions about modules creating Message-ID: Hi, there. I need help with modules creating. 1) I'm trying to make the rule independent of configure, I mean "debug" or "release". For example I have archives containing *.h and *.cpp files. I wrote: Module { property string outputPath: product.sourceDirectory + "/generated" FileTagger { patterns: "*.7z" fileTags: ["unpack7z"] } Rule { id: extractor7z inputs: ["unpack7z"] Artifact { filePath: product.moduleProperty("extractor7z","outputPath") + "/" + input.baseDir fileTags: "unpacked" } condition: { return true; } prepare: { var cmdFunc = function() { if ( !File.exists(output.filePath) || File.lastModified(output.filePath) < File.lastModified(input.filePath)) { var args = []; args.push("x"); args.push("-y"); args.push("-o" + output.filePath); args.push(input.filePath); var cmd = new Command("7z", args); return cmd; } else { var cmd = new JavaScriptCommand(); cmd.sourceCode = function() { print("Do nothing..."); } return cmd; } } var cmd = cmdFunc(); cmd.description = "extracting " + input.fileName; cmd.highlight = "extractor 7z"; return cmd; } } } It works but I'm not sure that it's good idea. Does right way to do it exist? And if I update archive I get warning "WARNING: Cannot remove '/home/hokum/progs/qbs-test/hello_world_project/test_unpack/generated/archives'." What does it mean? May be archive is not good example, but in reality I want to get external dependencies from another source control systems and network shares. Product will have special files with path to external dependencies. 2) What does "id" property of Rule Item mean? 3) I can't understand how module "cpp" works. Only CppModule.qbs contains Module Item, other qbs files contain UnixGCC Item, CppModule Item. I guess Module Item from CppModule.qbs describes general properties of module "cpp" and the condition property of Item defines which Item will work. But I had tried to do it and I got error "Module mymodule could not be loaded". Could you explain how it works? Thank a lot for your support. -- *Yours faithfully,* *Alexey Shashev* -------------- next part -------------- An HTML attachment was scrubbed... URL: From christian.kandeler at qt.io Mon May 9 09:28:14 2016 From: christian.kandeler at qt.io (Christian Kandeler) Date: Mon, 9 May 2016 09:28:14 +0200 Subject: [QBS] Some questions about modules creating In-Reply-To: References: Message-ID: <57303C0E.4030805@qt.io> On 05/07/2016 04:14 PM, Алексей Шашев wrote: > Hi, there. I need help with modules creating. > > 1) I'm trying to make the rule independent of configure, I mean "debug" > or "release". For example I have archives containing *.h and *.cpp > files. I wrote: > > Module > { > property string outputPath: product.sourceDirectory + "/generated" You should never generate any files in the source directory. Of course, if you plan to use your module in your own personal project only, you can do whatever you want, but in general this is a no-go. > FileTagger { > patterns: "*.7z" > fileTags: ["unpack7z"] > } > > Rule { > id: extractor7z > inputs: ["unpack7z"] > > Artifact { > filePath: product.moduleProperty("extractor7z","outputPath") + > "/" + input.baseDir No, artifacts cannot be directories. You need to use the outputArtifacts property; see doc.qt.io/qbs/rule-item.html. In the code there, you call 7z, listing all the files in the package, and create a list of artifacts from that information. > fileTags: "unpacked" > } > > condition: { > return true; This is the default. > } > > prepare: { > var cmdFunc = function() { > if ( !File.exists(output.filePath) || > File.lastModified(output.filePath) < > File.lastModified(input.filePath)) No, no, no. The build system does this for you! The code in the next block is all you need. > { > var args = []; > args.push("x"); > args.push("-y"); > args.push("-o" + output.filePath); > args.push(input.filePath); > var cmd = new Command("7z", args); > > return cmd; > } > else > { > var cmd = new JavaScriptCommand(); > cmd.sourceCode = function() { > print("Do nothing..."); > } > return cmd; > } > } > > var cmd = cmdFunc(); > cmd.description = "extracting " + input.fileName; > cmd.highlight = "extractor 7z"; > > return cmd; > } > > } > } > > It works but I'm not sure that it's good idea. Does right way to do it > exist? > > And if I update archive I get warning "WARNING: Cannot remove > '/home/hokum/progs/qbs-test/hello_world_project/test_unpack/generated/archives'." > What does it mean? This is because qbs does not expect this file to be a directory; see above. > May be archive is not good example, but in reality I want to get > external dependencies from another source control systems and network > shares. Product will have special files with path to external dependencies. > > 2) What does "id" property of Rule Item mean? Ids are a QML concept. You can refer to the instances of an item via this property. It is not technically needed for rules, but you can use it as a sort of documentation. > 3) I can't understand how module "cpp" works. Only CppModule.qbs > contains Module Item, other qbs files contain UnixGCC Item, CppModule > Item. All of these items are Modules. You might want to read up on item inheritance in Qml. > I guess Module Item from CppModule.qbs describes general > properties of module "cpp" and the condition property of Item defines > which Item will work. Yes. > But I had tried to do it and I got error "Module mymodule could not be loaded". You'll need to provide a specific (minimal but complete) example for me to give a useful comment. Christian From ashashev at gmail.com Mon May 9 14:36:18 2016 From: ashashev at gmail.com (Alexei Shashev) Date: Mon, 09 May 2016 15:36:18 +0300 Subject: [QBS] Some questions about modules creating In-Reply-To: <57303C0E.4030805@qt.io> References: <57303C0E.4030805@qt.io> Message-ID: <1462797378.28576.37.camel@gmail.com> Am I right in understanding that using QBS for getting external libraries is a bad idea? For example I used Makefile for getting library like this: $(target): lazy $(objects) $(CXX) $(objects) -o $(target) lazy: git clone https://hokum at bitbucket.org/hokum/lazy_list.git $(parentdir)/lazy (full MMakefile file: https://bitbucket.org/hokum/waterpouringcpp/src/131aa00a46bc7b41e05aca3e9bebc4e1608b8834/Makefile?fileviewer=file-view-default ) Or may be any right way exists? I mean I'm writing somewhere which libraries product needs. And if anybody wanted to build it he could pull down source code and just run "qbs". If product needed SomeLib v.1.0.1, it would be downloaded. > > > But I had tried to do it and I got error "Module mymodule could not be loaded". > > > > You'll need to provide a specific (minimal but complete) example for me > > to give a useful comment. I read up on item inheritance in Qml and found my mistake. I had base_module.qbs: Module { condition: false //... } and module.qbs: base_module { condition: true //... } When I replaced base_module on Base_module: Base_module.qbs: Module { condition: false //... } and module.qbs: Base_module { condition: true //... } It started to work. I should start name of items from upper-case letter. Thank you for your answers. В Пн, 09/05/2016 в 09:28 +0200, Christian Kandeler пишет: > On 05/07/2016 04:14 PM, Алексей Шашев wrote: > > Hi, there. I need help with modules creating. > > > > 1) I'm trying to make the rule independent of configure, I mean "debug" > > or "release". For example I have archives containing *.h and *.cpp > > files. I wrote: > > > > Module > > { > > property string outputPath: product.sourceDirectory + "/generated" > > You should never generate any files in the source directory. Of course, > if you plan to use your module in your own personal project only, you > can do whatever you want, but in general this is a no-go. > > > FileTagger { > > patterns: "*.7z" > > fileTags: ["unpack7z"] > > } > > > > Rule { > > id: extractor7z > > inputs: ["unpack7z"] > > > > Artifact { > > filePath: product.moduleProperty("extractor7z","outputPath") + > > "/" + input.baseDir > > No, artifacts cannot be directories. You need to use the outputArtifacts > property; see doc.qt.io/qbs/rule-item.html. In the code there, you call > 7z, listing all the files in the package, and create a list of artifacts > from that information. > > > fileTags: "unpacked" > > } > > > > condition: { > > return true; > > This is the default. > > > } > > > > prepare: { > > var cmdFunc = function() { > > if ( !File.exists(output.filePath) || > > File.lastModified(output.filePath) < > > File.lastModified(input.filePath)) > > > No, no, no. The build system does this for you! The code in the next > block is all you need. > > > { > > var args = []; > > args.push("x"); > > args.push("-y"); > > args.push("-o" + output.filePath); > > args.push(input.filePath); > > var cmd = new Command("7z", args); > > > > return cmd; > > } > > else > > { > > var cmd = new JavaScriptCommand(); > > cmd.sourceCode = function() { > > print("Do nothing..."); > > } > > return cmd; > > } > > } > > > > var cmd = cmdFunc(); > > cmd.description = "extracting " + input.fileName; > > cmd.highlight = "extractor 7z"; > > > > return cmd; > > } > > > > } > > } > > > > It works but I'm not sure that it's good idea. Does right way to do it > > exist? > > > > And if I update archive I get warning "WARNING: Cannot remove > > '/home/hokum/progs/qbs-test/hello_world_project/test_unpack/generated/archives'." > > What does it mean? > > This is because qbs does not expect this file to be a directory; see above. > > > May be archive is not good example, but in reality I want to get > > external dependencies from another source control systems and network > > shares. Product will have special files with path to external dependencies. > > > > 2) What does "id" property of Rule Item mean? > > Ids are a QML concept. You can refer to the instances of an item via > this property. It is not technically needed for rules, but you can use > it as a sort of documentation. > > > 3) I can't understand how module "cpp" works. Only CppModule.qbs > > contains Module Item, other qbs files contain UnixGCC Item, CppModule > > Item. > > All of these items are Modules. You might want to read up on item > inheritance in Qml. > > > I guess Module Item from CppModule.qbs describes general > > properties of module "cpp" and the condition property of Item defines > > which Item will work. > > Yes. > > > But I had tried to do it and I got error "Module mymodule could not be loaded". > > You'll need to provide a specific (minimal but complete) example for me > to give a useful comment. > > > Christian > _______________________________________________ > QBS mailing list > QBS at qt-project.org > http://lists.qt-project.org/mailman/listinfo/qbs From christian.kandeler at qt.io Wed May 11 16:34:58 2016 From: christian.kandeler at qt.io (Christian Kandeler) Date: Wed, 11 May 2016 16:34:58 +0200 Subject: [QBS] qbs 1.5.0 released Message-ID: <57334312.8040909@qt.io> Hi, we have released qbs 1.5.0 today. It is also available as part of Qt Creator 4.0.0. As usual, source packages and a binary package for Windows are available from https://download.qt.io/official_releases/qbs/1.5.0/. Christian From christian.kandeler at qt.io Thu May 12 09:47:56 2016 From: christian.kandeler at qt.io (Christian Kandeler) Date: Thu, 12 May 2016 09:47:56 +0200 Subject: [QBS] Heads up: Deprecating the Transformer item Message-ID: <5734352C.1080205@qt.io> Good morning*, right from the beginning, the Transformer item was an odd one, its inputs being file paths instead of tags. As the Rule item evolved, Transformers fell more and more behind, and when we introduced "dynamic" rules, they stopped playing well with the rest of qbs and probably should have been removed at that point. Well, better late than never: We are deprecating Transformers for qbs 1.6 and we will remove support for them entirely in qbs 1.7. Here's the transition guide: Case 1: Your Transformer has inputs, i.e. it looks like this: Transformer { inputs: ["somefile.txt"] Artifact { ... } ... prepare: { ... } } Instead, give "somefile.txt" the tag "sometag" and now write: Rule { inputs: ["sometag"] Artifact { ... } ... prepare: { ... } } That's it. You can do that right now, as a Transformer was never required for this sort of thing. Case 2: Your Transformer has no inputs, i.e. it looks like this: Transformer { Artifact { ... } ... prepare: { ... } } Instead, write this: Rule { multiplex: true Artifact { ... } ... prepare: { ... } } Note: This is *not* possible using a current release, as rules with no inputs will only be supported from qbs 1.6 onwards (the feature is already available in the master branch, though). We recommend you do this kind of change soon after qbs 1.6 is released. Thank you for your attention, Christian *local time of day might differ depending on location From Jake.Petroules at qt.io Sat May 14 04:25:43 2016 From: Jake.Petroules at qt.io (Jake Petroules) Date: Sat, 14 May 2016 02:25:43 +0000 Subject: [QBS] qbs 1.5.0 released In-Reply-To: <57334312.8040909@qt.io> References: <57334312.8040909@qt.io> Message-ID: <036C6B55-3E84-4176-9D39-C4FAF8492F18@qt.io> As usual, qbs 1.5.0 is now available on: • Chocolatey • Homebrew • MacPorts • Arch -- an AUR is available (https://aur.archlinux.org/packages/qbs/); please vote for it to get it accepted into the mainline! • Fedora -- an official packaging is still in the works, but https://copr.fedoraproject.org/coprs/jakepetroules/qbs/ is available for convenience (unsupported) Older versions of qbs exists in Debian (testing, unstable) and Ubuntu (universe) beginning with Vivid (15.04). > On May 11, 2016, at 7:34 AM, Christian Kandeler wrote: > > Hi, > > we have released qbs 1.5.0 today. It is also available as part of Qt Creator 4.0.0. As usual, source packages and a binary package for Windows are available from https://download.qt.io/official_releases/qbs/1.5.0/. > > > Christian > _______________________________________________ > QBS mailing list > QBS at qt-project.org > http://lists.qt-project.org/mailman/listinfo/qbs -- Jake Petroules - jake.petroules at theqtcompany.com Consulting Services Engineer - The Qt Company Qbs build system evangelist - qbs.io From nolden at kde.org Sat May 14 08:41:12 2016 From: nolden at kde.org (Ralf Nolden) Date: Sat, 14 May 2016 08:41:12 +0200 Subject: [QBS] qbs 1.5.0 released In-Reply-To: <036C6B55-3E84-4176-9D39-C4FAF8492F18@qt.io> References: <57334312.8040909@qt.io> <036C6B55-3E84-4176-9D39-C4FAF8492F18@qt.io> Message-ID: <1779215.IDniK5YxsZ@w530.nolden.freebsd> Am Samstag, 14. Mai 2016, 02:25:43 schrieb Jake Petroules: > As usual, qbs 1.5.0 is now available on: > > • Chocolatey > • Homebrew > • MacPorts > • Arch -- an AUR is available (https://aur.archlinux.org/packages/qbs/); > please vote for it to get it accepted into the mainline! • Fedora -- an > official packaging is still in the works, but > https://copr.fedoraproject.org/coprs/jakepetroules/qbs/ is available for > convenience (unsupported) > Older versions of qbs exists in Debian (testing, unstable) and Ubuntu > (universe) beginning with Vivid (15.04). For completeness, whoever wants to help test qbs or fix issues :) I've updated our portstree for FreeBSD for qtcreator and qbs. The ports are available in branches/qt5.6: https://freebsd.kde.org/area51.php under 2) use svn co http://area51.pcbsd.org/branches/qt-5.6 /path/to/area51 instead of trunk. qbs and qtcreator ports are in QT/devel/qbs and QT/devel/qtcreator. Qt 5.6 can be installed first using the metaport in devel/qt5. Make sure no Qt5 port/package is installed on your system before compiling. Ralf > > > On May 11, 2016, at 7:34 AM, Christian Kandeler > > wrote: > > Hi, > > > > we have released qbs 1.5.0 today. It is also available as part of Qt > > Creator 4.0.0. As usual, source packages and a binary package for Windows > > are available from https://download.qt.io/official_releases/qbs/1.5.0/. > > > > Christian > > _______________________________________________ > > QBS mailing list > > QBS at qt-project.org > > http://lists.qt-project.org/mailman/listinfo/qbs > > > -- > Jake Petroules - jake.petroules at theqtcompany.com > Consulting Services Engineer - The Qt Company > Qbs build system evangelist - qbs.io > > _______________________________________________ > QBS mailing list > QBS at qt-project.org > http://lists.qt-project.org/mailman/listinfo/qbs -- Kind regards, Ralf Nolden From s.stadelmann at aucos.de Wed May 18 09:33:41 2016 From: s.stadelmann at aucos.de (Sebastian Stadelmann) Date: Wed, 18 May 2016 09:33:41 +0200 Subject: [QBS] QBS Rule Item: Code generation with multiple output files with variable names Message-ID: <45EB0679-8C2E-44B0-8CEA-315CAD15A9CB@aucos.de> Hi, in our project we need to generates several „*.cpp“ and „*.h“ files from one input file ("*.db“). In the input file we define a database table structure for multiple tables and generate one cpp class for each table definition. The name of the generated cpp files is not known before we start the code generator because the name was defined in the input file. Ex.: input: customer.db output: parts.h, parts.cpp, orders.h, orders.cpp … We also generate a text file with a list of all generated files. This text file has a defined name. Is there a way to compile all generated files in the current product after running the code generator by appending the files from the generated text file to the product files? Or do you have any other suggestions? Any help would be appreciated. Thanks Sebastian import qbs import qbs.FileInfo AucosDynamicLibrary { name: "subcore" Depends { name: "core" } files: [ "*.db", "*.cpp", "*.h" ] FileTagger { patterns: ["*.db"] fileTags: ["db"] } Rule { inputs: ["db"] outputArtifacts: [{filePath: FileInfo.baseName(input.filePath)+".txt"}] outputFileTags: ["cpp"] prepare: { var awk = "awk" var awkScript = project.path + "/../utils/sql/db2c++.awk"; var args = ["-f ", awkScript, "-v", "prifile="+FileInfo.baseName(input.filePath)+".txt", input.filePath]; var cmd = new Command(awk, args); cmd.workingDirectory = product.buildDirectory; cmd.description = "generating C++ source"; return cmd; } } Export { Depends { name: "core" } } } -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 842 bytes Desc: Message signed with OpenPGP using GPGMail URL: From Jake.Petroules at qt.io Wed May 18 10:07:21 2016 From: Jake.Petroules at qt.io (Jake Petroules) Date: Wed, 18 May 2016 08:07:21 +0000 Subject: [QBS] QBS Rule Item: Code generation with multiple output files with variable names In-Reply-To: <45EB0679-8C2E-44B0-8CEA-315CAD15A9CB@aucos.de> References: <45EB0679-8C2E-44B0-8CEA-315CAD15A9CB@aucos.de> Message-ID: <1DCD73B3-B16A-4589-8752-70631CAC42C1@qt.io> Hi Sebastian, You need to give the output artifact of your Rule the cpp file tag in order it to be recognized as a C++ source file. The outputFileTags property only indicates the potential set of file tags that artifacts in the outputArtifacts script may contain (for more complex Rules where the list of artifacts may vary, the distinction is necessary); you still have to explicitly state which file tags each Artifact has. You can also use output.filePath in your prepare script instead of repeating the value of your Artifact's filePath literally. For example: import qbs import qbs.FileInfo AucosDynamicLibrary { name: "subcore" Depends { name: "core" } files: [ "*.db", "*.cpp", "*.h" ] FileTagger { patterns: ["*.db"] fileTags: ["db"] } Rule { inputs: ["db"] outputArtifacts: [{filePath: FileInfo.baseName(input.filePath) + ".txt", fileTags: ["cpp"]}] outputFileTags: ["cpp"] // Instead of outputArtifacts and outputFileTags, you could also use the following, since there is only one output Artifact: /*Artifact { filePath: FileInfo.baseName(input.filePath) + ".txt" fileTags: ["cpp"] }*/ prepare: { var awk = "awk" var awkScript = project.path + "/../utils/sql/db2c++.awk"; var args = ["-f ", awkScript, "-v", "prifile=" + output.filePath, input.filePath]; var cmd = new Command(awk, args); cmd.workingDirectory = product.buildDirectory; cmd.description = "generating C++ source"; return cmd; } } Export { Depends { name: "core" } } } On May 18, 2016, at 12:33 AM, Sebastian Stadelmann > wrote: Hi, in our project we need to generates several „*.cpp“ and „*.h“ files from one input file ("*.db“). In the input file we define a database table structure for multiple tables and generate one cpp class for each table definition. The name of the generated cpp files is not known before we start the code generator because the name was defined in the input file. Ex.: input: customer.db output: parts.h, parts.cpp, orders.h, orders.cpp … We also generate a text file with a list of all generated files. This text file has a defined name. Is there a way to compile all generated files in the current product after running the code generator by appending the files from the generated text file to the product files? Or do you have any other suggestions? Any help would be appreciated. Thanks Sebastian import qbs import qbs.FileInfo AucosDynamicLibrary { name: "subcore" Depends { name: "core" } files: [ "*.db", "*.cpp", "*.h" ] FileTagger { patterns: ["*.db"] fileTags: ["db"] } Rule { inputs: ["db"] outputArtifacts: [{filePath: FileInfo.baseName(input.filePath)+".txt"}] outputFileTags: ["cpp"] prepare: { var awk = "awk" var awkScript = project.path + "/../utils/sql/db2c++.awk"; var args = ["-f ", awkScript, "-v", "prifile="+FileInfo.baseName(input.filePath)+".txt", input.filePath]; var cmd = new Command(awk, args); cmd.workingDirectory = product.buildDirectory; cmd.description = "generating C++ source"; return cmd; } } Export { Depends { name: "core" } } } _______________________________________________ QBS mailing list QBS at qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs -- Jake Petroules - jake.petroules at theqtcompany.com Consulting Services Engineer - The Qt Company Qbs build system evangelist - qbs.io -------------- next part -------------- An HTML attachment was scrubbed... URL: From christian.kandeler at qt.io Wed May 18 10:51:25 2016 From: christian.kandeler at qt.io (Christian Kandeler) Date: Wed, 18 May 2016 10:51:25 +0200 Subject: [QBS] QBS Rule Item: Code generation with multiple output files with variable names In-Reply-To: <45EB0679-8C2E-44B0-8CEA-315CAD15A9CB@aucos.de> References: <45EB0679-8C2E-44B0-8CEA-315CAD15A9CB@aucos.de> Message-ID: <573C2D0D.3050207@qt.io> On 05/18/2016 09:33 AM, Sebastian Stadelmann wrote: > in our project we need to generates several „*.cpp“ and „*.h“ files from one input file ("*.db“). > In the input file we define a database table structure for multiple tables and generate one cpp class > for each table definition. > The name of the generated cpp files is not known before we start the code generator because the name > was defined in the input file. > Ex.: input: customer.db > output: parts.h, parts.cpp, orders.h, orders.cpp … > We also generate a text file with a list of all generated files. This text file has a defined name. > > Is there a way to compile all generated files in the current product after running the code generator by appending the files from the > generated text file to the product files? Or do you have any other suggestions? Yes. You create a second rule. Its input is the generated text file. In the outputArtifacts script of that rule you parse the text file and create one artifact object per line. The command itself created by that rule in its prepare script can be empty (as the files already exist). That should be all. > import qbs > import qbs.FileInfo > AucosDynamicLibrary { > name: "subcore" > Depends { name: "core" } > files: [ > "*.db", > "*.cpp", > "*.h" > ] > FileTagger { > patterns: ["*.db"] > fileTags: ["db"] > } > Rule { > inputs: ["db"] > outputArtifacts: [{filePath: FileInfo.baseName(input.filePath)+".txt"}] > outputFileTags: ["cpp"] Unless I completely misunderstood the problem, this file tag should not be "cpp", but some custom tag that serves as an input to the second rule mentioned above. > > prepare: { > var awk = "awk" > var awkScript = project.path + "/../utils/sql/db2c++.awk"; > var args = ["-f ", awkScript, "-v", "prifile="+FileInfo.baseName(input.filePath)+".txt", input.filePath]; > var cmd = new Command(awk, args); > cmd.workingDirectory = product.buildDirectory; > cmd.description = "generating C++ source"; > return cmd; > } > } > > Export { Depends { name: "core" } } > } Christian From mikenoe at centurylink.net Sat May 21 20:37:12 2016 From: mikenoe at centurylink.net (Mike Noe) Date: Sat, 21 May 2016 14:37:12 -0400 Subject: [QBS] QTCreator upgrade regression Message-ID: <683189e4-f664-0127-5ad9-40fc9a319764@centurylink.net> I just upgraded to QTCreator 4 on openSUSE TW and I have what seems to be a regression. I have a qbs file (mcwswidgets.qbs) in a folder (../qbs_files) that defines a module that imports a bunch of group qbs files: import qbs import "../../../mcwswidgets/mcwsplugin.qbs" as mcwsPlugin import "../../../mcwswidgets/playerdisplay.qbs" as PD import "../../../mcwswidgets/connectdlg.qbs" as Connect import "../../../mcwswidgets/trackdisplay.qbs" as TD import "../../../mcwswidgets/detailview.qbs" as dvDocker import "../../../mcwswidgets/playeroptions.qbs" as PO import "../../../mcwswidgets/volumecontrol.qbs" as Volume import "../../../mcwswidgets/playlistdock.qbs" as plDocker Module { Depends { name: "cpp" } // have to include mcwswidgets because the designer uses the subfolders paths for the include in the ui_* file cpp.includePaths: ["../mcwswidgets","../mcwswidgets/mcwsplugin"] mcwsPlugin{} Connect{} PD{} TD{} dvDocker{} PO{} Volume{} plDocker{} } Then, in my project, I "depend" on this as such: Project { name: "MCWS Remote GUI" qbsSearchPaths: ["../qbs_files"] QtApplication { name: "mcwsRemote" Depends { name: 'Qt'; submodules: ['widgets','network','dbus'] } // Depends { name: "mcws_static" } Depends { name: "mcws" } Depends { name: "mcwswidgets" } .... With QTCreator 3.6, which I guess included an earlier version of QBS, this would bring in the Groups to my project. Now, they are not automatically brought in via the Depends. I'm not sure if this is a regression or some mechanism has changed such that this is no longer supported with the QBS that ships with QTCreator 4. From christian.kandeler at qt.io Tue May 24 16:49:02 2016 From: christian.kandeler at qt.io (Christian Kandeler) Date: Tue, 24 May 2016 16:49:02 +0200 Subject: [QBS] QTCreator upgrade regression In-Reply-To: <683189e4-f664-0127-5ad9-40fc9a319764@centurylink.net> References: <683189e4-f664-0127-5ad9-40fc9a319764@centurylink.net> Message-ID: <574469DE.2010907@qt.io> Hi, On 05/21/2016 08:37 PM, Mike Noe wrote: > I just upgraded to QTCreator 4 on openSUSE TW and I have what seems to > be a regression. > > I have a qbs file (mcwswidgets.qbs) in a folder (../qbs_files) that > defines a module that imports a bunch of group qbs files: [ ... ] > With QTCreator 3.6, which I guess included an earlier version of QBS, > this would bring in the Groups to my project. Now, they are not > automatically brought in via the Depends. I'm not sure if this is a > regression or some mechanism has changed such that this is no longer > supported with the QBS that ships with QTCreator 4. are you sure your module was loaded successfully (i.e. the product is enabled)? If so, please boil your project down to a minimal one that still exhibits the problem and file a bug report at bugreports.qt.io. Christian