The final release of the Qbs build toolchain has been published

The Qt Company released build toolchain Qbs 1.13 (Qt Build Suite). This is the last release of Qbs, developed by Qt Company. It is worth reminding that there was previously made a decision to discontinue the development of Qbs. Qbs was developed as a replacement for qmake, but ultimately it was decided to use CMake as the primary build system for Qt in the long term.

In the near future, an independent project is expected to be created to continue the development of Qbs by the community, the fate of which will depend on the interest in the build system from independent developers. Qt Company is discontinuing work on Qbs due to the need for additional investments and high costs for promoting Qbs.

It is worth noting that Qbs requires Qt as a dependency for building, although Qbs itself is designed for organizing builds of any projects. Qbs uses a simplified version of the QML language for defining project build scripts, allowing flexible build rules that can include external modules, utilize JavaScript functions, and create arbitrary build rules.
Qbs does not generate makefiles and independently manages the launching of compilers and linkers, optimizing the build process based on a detailed graph of all dependencies. The availability of initial information about the structure and dependencies in a project allows for efficiently parallelizing operations across multiple threads.

Key features of Qbs 1.13:

  • The ability to use pkg-config modules in projects has been added, utilizing the same dependency processing mechanism used for Qbs modules. For example, if there is a system package for building OpenSSL based on pkg-config, to use it in a Qbs project, simply add 'Depends { name: "openssl" }';
  • Automatic detection of available Qt modules has been implemented. Developers no longer need to create a profile with paths to modules using the setup-qt command; all Qt modules specified in dependencies will be configured automatically.
  • Tools have been added to control the number of parallel build tasks at the level of individual teams. For example, linking creates a heavy load on the I/O and consumes a significant amount of RAM, so the linker requires different launch settings than the compiler. Separate settings can now be specified 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 dummy output file, and it is no longer necessary to use the 'import qbs' directive at the beginning of project files. New properties install and installDir have been added to the Application, DynamicLibrary, and StaticLibrary elements for more convenient installation of executable files;
  • Support for recursive scanning of linker scripts has been added
    GNU linker;
  • For the C++ language, the property cpp.linkerVariant has been implemented to force the use of linkers ld.gold, ld.bfd, or lld;
  • For Qt, the property Qt.core.enableBigResources has been introduced for creating large Qt resources
  • Instead of the deprecated AndroidApk element, it is recommended to use the general Application type;
  • A module for creating tests based on autotest has been added;
  • A texttemplate module has been added with features similar to QMAKE_SUBSTITUTES in qmake;
  • Initial support for the Protocol Buffers format for C++ and Objective-C has been added.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster