The final release of the Qbs assembly toolkit has been published

Qt Company опубликовала assembly tools Qbs 1.13 (Qt Build Suite). This is the latest release of Qbs produced by the Qt Company. Let's remember what happened earlier received decision to stop developing Qbs. Qbs was developed as a replacement for qmake, but ultimately it was decided to use CMake as the main build system for Qt in the long term.

In the near future, it is expected that an independent project will be created to continue the development of Qbs by the community, the fate of which will depend on the interest in the assembly system in question from independent developers. Qt Company stops working on Qbs due to the need for additional investment and high costs for promoting Qbs.

Let us recall that to build Qbs, Qt is required as a dependency, although Qbs itself is designed to organize the assembly of any projects. Qbs uses a simplified version of the QML language to define project build scripts, which allows you to define fairly flexible build rules that can connect external modules, use JavaScript functions, and create custom build rules.
Qbs does not generate makefiles and independently controls the launch of compilers and linkers, optimizing the build process based on a detailed graph of all dependencies. The presence of initial data about the structure and dependencies in the project allows you to effectively parallelize the execution of operations in several threads.

Key innovations in Qbs 1.13:

  • Added the ability to use pkg-config modules in projects using the same dependency processing mechanism that is used for Qbs modules. For example, if your system has a package for building OpenSSL based on pkg-config, to use it in a Qbs project, just add 'Depends { name: "openssl" }';
  • Implemented automatic detection of available Qt modules. Developers no longer need to create a profile with module paths using the setup-qt command; all Qt modules specified in dependencies will be configured automatically;
  • Added tools to control the number of assembly tasks running in parallel at the level of individual commands. For example, linking creates a large I/O load and consumes a significant amount of RAM, so the linker requires different startup settings than the compiler. Separate settings can now be set using the command “qbs —job-limits linker:2,compiler:8”;
  • Changes have been made to the scripting language. Rules can now be defined without specifying a stub file for output, and it is not necessary to use the “import qbs” directive at the beginning of project files. New install and installDir properties have been added to the Application, DynamicLibrary and StaticLibrary elements for more convenient installation of executable files;
  • Added support for recursive scanning of linker scripts
    GNU linker;

  • For C++, the cpp.linkerVariant property has been implemented to force the use of the ld.gold, ld.bfd or lld linkers;
  • Qt introduces Qt.core.enableBigResources property for creating large Qt resources
  • Instead of the obsolete AndroidApk element, it is proposed to use the generic Application type;
  • Added a module for creating tests based on autotest;
  • Added texttemplate module with capabilities similar to QMAKE_SUBSTITUTES in qmake;
  • Added initial support for the Protocol Buffers format for C++ and Objective-C.

Source: opennet.ru

Add a comment