aboutsummaryrefslogtreecommitdiffstats
path: root/doc/qbs.qdoc
Commit message (Collapse)AuthorAgeFilesLines
* Merge 2.3 into masterChristian Kandeler2024-05-101-1/+1
|\ | | | | | | Change-Id: Ibfa0e6880a3da48c5fefa4a4ed3b0f450698d567
| * doc: fix links to ApplicationIvan Komissarov2024-05-061-1/+1
| | | | | | | | | | | | | | ...by renaming the Application page to Console Application. Change-Id: I192d3d3c65cd20019fb63b1309d564d4859f0aeb Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | tutorial: part 3Ivan Komissarov2024-05-031-0/+1
|/ | | | | Change-Id: I39b6a7ab3fc3ef54e144684d1ac115599b630759 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Tutorial. Part 2Ivan Komissarov2024-03-141-0/+4
| | | | | Change-Id: I811abcf38adc1193491e736db580b709db28349f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Loader: Deprecate the fallback providerChristian Kandeler2024-01-311-6/+0
| | | | | | | | | | | The fallback provider creates modules for all named dependencies that were not found and only later checks during validation whether such a pkg-config module exists. This breaks assumptions all over the place. Since we have a superior replacement in qbspkgconfig, we now deprecate the fallback provider. Change-Id: I3694515865d63e7308cfab7778068aa2e480fe23 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Tutorial. Part 1Ivan Komissarov2024-01-301-2/+8
| | | | | | | | This change adds a step-by step tutorial that helps to explain Qbs concepts and best practices for new users. Change-Id: I5c669f8fa0f89b8300f241bb8e4ed7cd4b3bb4c6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Bump minimum Qt versionChristian Kandeler2023-09-121-1/+1
| | | | | | | | There's no need to drop Qt 5 just yet, but we should require the latest version. Change-Id: I2653ef5c3c244453db88a48d59e2c86eb38518b5 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* doc: move Special Property Values to a separate pageIvan Komissarov2023-05-111-1/+160
| | | | | | | | Also, document values that were not documented such as path, filePath, product, project. Change-Id: Ibad64e2998697b4c8c625c3088b835c8be428f54 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: fix introIvan Komissarov2023-04-221-15/+5
| | | | | Change-Id: I403a5a8f7716c88ed7c36d610cb1762e78be3e14 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Docs: Do not use .contains()Christian Kandeler2023-02-201-2/+2
| | | | | | | Amends e3522f42773cfbb9a980e859c906457b3571fa1f. Change-Id: If51576f080ee5c01eeae493934cf646403594965 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Remove dangling link to unused hostOS propertyRichard Weickelt2023-02-141-2/+0
| | | | | | | | | | The hostOS property was taken out of the qbs module and replaced by the os property of the Host service. The whole bullet point is no longer valid. Change-Id: Ia35a51dffc7b7593e896b754f741cf12aab71db3 Fixes: QBS-1716 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Switch JavaScript back-endChristian Kandeler2023-02-071-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Newer clang versions seem to expose serious bugs in QtScript, whose complexity makes it difficult to track them down. We therefore switch to the more light-weight QuickJS, which offers all the features we need (most notably property access interception), as well as good performance. To save some porting effort, we removed the long-deprecated loadFile() and loadExtension() functions. During the porting procedure, we noticed and fixed thread safety issues in artifact access from JS commands. We consider this change important enough to bump the major version, so the next release will be 2.0. Detailed benchmarking data is below. In summary, we see a modest speed- up at the cost of a similarly modest increase in memory consumption (with the exception of project resolving on macOS, which has become a bit slower). Importantly, the increase does not rise with project size, as the comparison of qbs vs Qt Creator shows. Output of qbs_benchmarker on Linux with qbs as test project: ========== Performance data for Resolving ========== Old instruction count: 12870602895 New instruction count: 11923459780 Relative change: -8 % Old peak memory usage: 61775848 Bytes New peak memory usage: 67583424 Bytes Relative change: +9 % ========== Performance data for Rule Execution ========== Old instruction count: 4074062223 New instruction count: 3887473574 Relative change: -5 % Old peak memory usage: 35123704 Bytes New peak memory usage: 38398392 Bytes Relative change: +9 % ========== Performance data for Null Build ========== Old instruction count: 1104417596 New instruction count: 1011033948 Relative change: -9 % Old peak memory usage: 24461824 Bytes New peak memory usage: 25325920 Bytes Relative change: +3 % Output of qbs_benchmarker on Linux with Qt Creator as test project: ========== Performance data for Resolving ========== Old instruction count: 67166450352 New instruction count: 60772791018 Relative change: -10 % Old peak memory usage: 327011616 Bytes New peak memory usage: 343724176 Bytes Relative change: +5 % ========== Performance data for Rule Execution ========== Old instruction count: 71684351183 New instruction count: 67051936965 Relative change: -7 % Old peak memory usage: 374913688 Bytes New peak memory usage: 387790992 Bytes Relative change: +3 % ========== Performance data for Null Build ========== Old instruction count: 8383156078 New instruction count: 7930705668 Relative change: -6 % Old peak memory usage: 180468360 Bytes New peak memory usage: 182490384 Bytes Relative change: +1 % Real-world data building Qt Creator (using qbs --log-time, several runs, removing outliers): macOS: Resolving: 43s -> 47s Rule execution: 17s -> 14s Windows: Resolving: 18s -> 16s Rule execution: 22s -> 17s Fixes: QBS-913 Fixes: QBS-1103 Fixes: QBS-1126 Fixes: QBS-1227 Fixes: QBS-1684 Change-Id: Ie5088155026e85bbd1e303f1c67addb15810a3cb Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* Document how to append files to base properties in derived typesMitch Curtis2021-12-151-0/+7
| | | | | | | Change-Id: I5ee6d7bce9aa6479f7603356304e0a0f99f05610 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* doc: clarify that app is not runnableIvan Komissarov2021-10-191-3/+11
| | | | | | | | ... unless rpaths are set. Also, link Running Applications page with the "qbs run" docs. Change-Id: If981555cb617324d45408d98f7f5bc61ba737eaf Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: add page for Qt module providerIvan Komissarov2021-10-191-1/+1
| | | | | Change-Id: Ic912c4b11780503d368602c8c103fd9ece589853 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Don't mention the old-style import qbs statementRichard Weickelt2021-10-181-3/+0
| | | | | | | | | The import qbs 1.0 import statement has been removed a long time ago, but it was still mentioned in the hello world example. Task-number: QBS-1678 Change-Id: Ie44cae1a25f007e6bbeaf0632f472089428d6c47 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Implement eager pkg-config providerIvan Komissarov2021-10-141-0/+1
| | | | | | | | | | This implements provider that generates modules based on all .pc files present in system. This allows to get rid of the multi-shot providers such as fallback provider. Fixes: QBS-1614 Change-Id: Icf87ac609bc34bd26e8ed94ae547a7e649835a3a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Implement qbsModuleProviders propertyIvan Komissarov2021-09-201-1/+20
| | | | | | | | | | It is now possible to specify which providers should be run by providing the list of provider names. The desired providers can be selected on the Project and Product levels. Task-number: QBS-1604 Change-Id: Ib0782df00e3086104345f4b740fc1696d715344c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: fix linksIvan Komissarov2021-09-091-4/+3
| | | | | | Change-Id: I896a2725a31412af3bab8c0f211a64da77837e03 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Always build with project file updates supportIvan Komissarov2021-07-271-9/+0
| | | | | | | | Since QtGui dependency was removed, there is no reason not to Change-Id: Ib8975451f3c36a77e22a077bba18b5659f414767 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* doc: Cleanup and update information about QBS and IDEs integrationDenis Shienkov2020-12-081-12/+26
| | | | | Change-Id: Ieb36a6ba96666f07cd1c22383964f8ecd5acdd33 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Add section about building Qbs with CMakeIvan Komissarov2020-11-231-0/+46
| | | | | | | | | Fixes: QBS-1618 Change-Id: Id70fdb4213fe7877978f4fa62bbb35dfe13adb51 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix documentation warningsRichard Weickelt2020-10-251-18/+0
| | | | | | | | | | | The \contentspage command is obsolet without replacement. It has not been working since Qt5.2. The link to the Qt resource system does not work locally and should point to the online page instead. Change-Id: Ib065cfd26c90b60d3cd3d72820b16c6601e80ad4 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* doc: Update info about docker containersIvan Komissarov2020-09-141-4/+4
| | | | | | | This amends 018194f4a Change-Id: I2157d6697e6dfb30f72da624bb047c7650263aad Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge branch '1.17' into masterRichard Weickelt2020-08-031-5/+8
|\ | | | | | | Change-Id: I20a6b02ee34719636f9996e02cff9e29cf160dd7
| * doc: add link to the Installing page from the Building Applications pageIvan Komissarov2020-07-291-0/+3
| | | | | | | | | | | | Task-number: QBS-1386 Change-Id: Ia432a0c78e1cccce586ed89f4235f41a55aef54c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
| * doc: follow up fixes for the "Installing files" sectionIvan Komissarov2020-07-271-5/+5
| | | | | | | | | | | | | | Amends 0ac5a1467. Change-Id: I4b4a636765a17e1808ca6573e504660525448386 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* | Merge branch 1.17 into masterRichard Weickelt2020-07-241-7/+36
|\| | | | | | | Change-Id: Ice408bd77aa9f6481960c4fdf7f345a1a39b9f80
| * doc: Provide a complete example in the "Installing Files" sectionIvan Komissarov2020-07-241-7/+36
| | | | | | | | | | | | Fixes: QBS-1350 Change-Id: I86cf583ea8cd54041c17a8656913702aab7fc35d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Bump required Qt versionChristian Kandeler2020-07-241-1/+1
|/ | | | | | | | ... to 5.14. We need >= 5.12 for a recent QRegularExpression patch, and 5.14 is also what Qt Creator is currently on. Change-Id: I674e7b617acaed2bf2f668a31f82e800f05ccfc8 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Use docker-compose exclusively for managing Docker imagesRichard Weickelt2020-03-261-20/+21
| | | | | | | | | | | | | | | | | | Qbs used to have docker products and a module for building the images, but this became obsolet and was superseded by the docker-compose infrastructure. Docker-compose is a much better fit for our use-case (which is mostly CI). It allows us to use unique (and complicated) tags both when building and running the images without exposing that to the user. Unique tags like bionic-5.12.6_1.14.1-2 instead of just bionic ensure that changes in the infrastructure don't suddenly break builds in older branches using the same image. This patch also updates the documentation to emphasize the usage of docker-compose. Change-Id: I45335d37034d10dda5ab5079ee3be1f81cb3e5c5 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Add info about first capital letter in custom items file namesIvan Komissarov2020-03-201-0/+2
| | | | | | | Task-number: QBS-667 Change-Id: Ia3f946c0bf4c4047f1dc15044d68f554a8a73a21 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge branch '1.15' into masterRichard Weickelt2020-02-051-1/+1
|\ | | | | | | Change-Id: I7e348db380b836221db79c73ea3b5f1d891f114b
| * Doc: Fix default value of enableBundledQtJoerg Bornemann2019-12-181-1/+1
| | | | | | | | | | | | | | This amends commit 905ee49f. Change-Id: I4faf5a1ef7d2a1dbdbe7ea78eae2e07a4f33ae61 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | doc: Fix braces in snippetsIvan Komissarov2020-01-061-4/+4
| | | | | | | | | | | | | | Change-Id: I1d9601d9c969a0ec34cddca0d0e5053d06a039bf Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | Update build environment and Bionic Docker imageRichard Weickelt2019-10-241-4/+4
|/ | | | | | | Update also the docs to refer to the Ubuntu image rather than Debian. Change-Id: I2c64f8f169c7a8ff9d5090ebc55c56bffd957659 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce the session commandChristian Kandeler2019-09-181-3/+4
| | | | | | | | | | Offers a JSON-based API for interaction with other tools via stdin/ stdout. This allows for proper qbs support in IDEs that do not use Qt or even C++. Change-Id: Ib051a40b7ebe1c6e0c3147cca9bd96e7daec1fde Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* baremetal: Long live the IAR EW project generator for MSP430Denis Shienkov2019-08-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the IAR Embedded Workbench IDE, e.g. using the following command: qbs generate -g iarew7 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid IAR EW QBS profile, from which the generator take a desired target architecture and other stuff. The IAR EW generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native IAR EW project. Currently it is supported only one 'iarew7' generator which allow to generate a projects for the IAR EW for MSP430 for all versions of 7 series. Tested with the IAR EW for MSP430 v7.12.4, using as the QBS bare-metal examples, and as other projects. Change-Id: Ic0bbc82e6ebb3b04bced639797976e432809171f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Long live the KEIL UV project generator for ARMDenis Shienkov2019-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the KEIL UVision IDE, e.g. using the following command: qbs generate -g keiluv5 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid KEIL QBS profile, from which the generator take a desired target architecture and other stuff. The KEIL UV generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native KEIL UVsion project. Currently it is supported only one 'keiluv5' generator which allow to generate a projects for the KEIL UVision v5 for ARM architecture. Tested with the KEIL UVision v5.23 for ARM, using as the QBS bare-metal examples, and as other projects. Change-Id: I3af9d01f25a9570a99a62d4ce2c30fec3566b9a1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Add missed information about KEIL uVision generatorDenis Shienkov2019-08-021-3/+26
| | | | | Change-Id: Ib69952c190555401c6acdb48971ec0833215723a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Long live the IAR EW project generator for STM8Denis Shienkov2019-08-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the IAR Embedded Workbench IDE, e.g. using the following command: qbs generate -g iarew3 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid IAR EW QBS profile, from which the generator take a desired target architecture and other stuff. The IAR EW generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native IAR EW project. Currently it is supported only one 'iarew3' generator which allow to generate a projects for the IAR EW for STM8 for all versions of 3 series. Tested with the IAR EW for STM8 v3.11.1, using as the QBS bare-metal examples, and as other projects. Change-Id: I47880d62cd1e81ed7bbfba840a5af0c558065013 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Long live the IAR EW project generator for 8051Denis Shienkov2019-07-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the IAR Embedded Workbench IDE, e.g. using the following command: qbs generate -g iarew10 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid IAR EW QBS profile, from which the generator take a desired target architecture and other stuff. The IAR EW generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native IAR EW project. Currently it is supported only one 'iarew10' generator which allow to generate a projects for the IAR EW for 8051 for all versions of 10 series. Tested with the IAR EW for 8051 v10.10.1, using as the QBS bare-metal examples, and as other projects. Change-Id: If8a7397bebf6176010d42cfda41230e50a499a69 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Long live the IAR EW project generator for AVRDenis Shienkov2019-07-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the IAR Embedded Workbench IDE for Microchip AVR architecture, e.g. using the following command: qbs generate -g iarew7 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid IAR EW QBS profile, from which the generator take a desired target architecture and other stuff. The IAR EW generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native IAR EW project. Currently it is supported only one 'iarew7' generator which allow to generate a projects for the IAR EW for AVR for all versions of 7 series. Tested with the IAR EW for AVR v7.20.1, using as the QBS bare-metal examples, and as other projects. Change-Id: Ic5811e579e86b868d5946637db9d8780ef47968b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* baremetal: Long live the IAR EW project generator for ARMDenis Shienkov2019-07-111-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | Right now it is possible to generate a native projects for the IAR Embedded Workbench IDE, e.g. using the following command: qbs generate -g iarew8 -d <path/to/build/directory> -f <path/to/qbs/project> profile:<your/qbs/profile> We need in a valid IAR EW QBS profile, from which the generator take a desired target architecture and other stuff. The IAR EW generator has a semi-intelligent logic, it parses a source QBS project and converts a compiler flags and other stuff to an appropriate configurations of the native IAR EW project. Currently it is supported only one 'iarew8' generator which allow to generate a projects for the IAR EW for ARM for all versions of 8 series. Tested with the IAR EW for ARM v8.20, v8.32, v8.40, using as the QBS bare-metal examples, and as other projects. Change-Id: I2aa24d5a635f1f5a0e645bec8c30053e960d90a3 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Describe possible build options for QBSIvan Komissarov2019-05-201-0/+139
| | | | | Change-Id: Iec02aa7664efef27e562ab563436a389b3b908bc Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: add example how to use multiplexingIvan Komissarov2019-05-171-0/+6
| | | | | Change-Id: I67697fb5b4ddb2fcd7f42a2e70247038fc98f082 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Fix the section about docker containersIvan Komissarov2019-05-071-4/+8
| | | | | Change-Id: Ifb152a1c7a90422a4eed9cf5a790aa10518f27a9 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* doc: Add Building Qbs with Qbs sectionIvan Komissarov2019-05-061-2/+42
| | | | | | | | | | This section describes how to build Qbs with Qbs and how to run auto tests Change-Id: I3587f3a36262802354a79eb037697f9c410f7171 Reviewed-by: Richard Weickelt <richard@weickelt.de> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Update Debian Stretch Docker imageRichard Weickelt2019-04-291-6/+13
| | | | | | | | | | | | | | | | | The Debian Docker image is outdated and the user experience is not optimal, especially when using it on Linux hosts. - Update Qt to 5.11.3 and build it from source since the Qt installer is overly complicated to use - Create a Qt profile and make it the default - Add entrypoint script to avoid file permission problems on Linux hosts - Add docker-compose.yml file for easier command line usage - Improve documentation Task-number: QBS-1402 Task-number: QBS-1438 Change-Id: I2cbe53ed115fc8cbb96c1e1305297c581e7d0589 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Increase minimum required Qt versionChristian Kandeler2019-04-261-1/+1
| | | | | | | | | We recently merged a patch that used Qt 5.10 functionality. Let's use this opportunity to increase the minimum required Qt version. We choose 5.11, since that is also Qt Creator's requirement. Change-Id: I729a7e840ab9cdafb8f9fba604e413cd4b822bed Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>