เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเป‰เบฒเบ‡ Qbs เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ

เบšเปเบฅเบดเบชเบฑเบ” Qt เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ›เบฐเบเบญเบš เบฅเบฒเบ„เบฒ 1.13 (Qt Build Suite). เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เปˆเบญเบเบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡ Qbs เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เป‚เบ”เบเบšเปเบฅเบดเบชเบฑเบ” Qt. เปƒเบซเป‰เป€เบฎเบปเบฒเบˆเบทเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ เบ›เบฐเบ•เบดเบšเบฑเบ” เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบขเบธเบ”เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Qbs. Qbs เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบชเปเบฒเบฅเบฑเบš qmake, เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ CMake เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบš Qt เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง.

เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบญเบฑเบ™เปƒเบเป‰เบ™เบตเป‰, เบ„เบฒเบ”เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบžเบทเปˆเบญเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Qbs เป‚เบ”เบเบŠเบธเบกเบŠเบปเบ™, เบŠเบฐเบ•เบฒเบเปเบฒเบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเปƒเบ™เบ„เปเบฒเบ–เบฒเบกเบˆเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบญเบเบฐเบฅเบฒเบ”. เบšเปเบฅเบดเบชเบฑเบ” Qt เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Qbs เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบถเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบก Qbs.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆเบงเปˆเบฒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ Qbs, Qt เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ Qbs เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ”เป†. Qbs เปƒเบŠเป‰เบžเบฒเบชเบฒ QML เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบžเปเบชเบปเบกเบ„เบงเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบกเบ”เบนเบ™เบžเบฒเบเบ™เบญเบ, เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ JavaScript, เปเบฅเบฐเบชเป‰เบฒเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡.
Qbs เบšเปเปˆเบชเป‰เบฒเบ‡ makefiles เปเบฅเบฐเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ compilers เปเบฅเบฐ linkers, optimizing เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เปƒเบ™เบซเบผเบฒเบเป†เบซเบปเบงเบ‚เปเป‰.

เบเบฒเบ™เบ›เบฐเบ”เบดเบ”เบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™ Qbs 1.13:

  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ pkg-config เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ Qbs. เบ•เบปเบงเบขเปˆเบฒเบ‡: เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบกเบตเบŠเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ OpenSSL เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ pkg-config, เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Qbs, เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบก 'Depends { name: "openssl" }';
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™ Qt เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป‚เบกเบ”เบนเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ setup-qt; เป‚เบกเบ”เบนเบ™ Qt เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ dependencies เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”;
  • เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบˆเปเบฒเบ™เบงเบ™เบงเบฝเบเบ›เบฐเบเบญเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบฐเบซเบ™เบฒเบ™เบเบฑเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เป‚เบซเบผเบ” I/O เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเปƒเบŠเป‰ RAM เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบเปˆเบงเบฒ compiler. เบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ โ€œqbs โ€”job-limits linker:2,compiler:8โ€;
  • เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบžเบฒเบชเบฒเบชเบฐเบ„เบฃเบดเบšเปเบฅเป‰เบง. เบ•เบญเบ™เบ™เบตเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป„เบŸเบฅเปŒ stub เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ qbs" เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเป‚เบ„เบ‡เบเบฒเบ™. เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡Dir เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ Application, DynamicLibrary เปเบฅเบฐ StaticLibrary เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเบฐเบ”เบงเบเบเบงเปˆเบฒ;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบเบ™ recursive เบ‚เบญเบ‡ linker scripts
    เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GNU;

  • เบชเปเบฒเบฅเบฑเบš C++, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” cpp.linkerVariant เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เปƒเบŠเป‰เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ ld.gold, ld.bfd เบซเบผเบท lld;
  • Qt เปเบ™เบฐเบ™เปเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” Qt.core.enableBigResources เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Qt เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ
  • เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบš AndroidApk เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบก, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบปเปˆเบงเป„เบ›;
  • เป€เบžเบตเปˆเบกเป‚เบกเบ”เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ autotest;
  • เป€เบžเบตเปˆเบกเป‚เบกเบ”เบนเบ™เปเบกเปˆเปเบšเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš QMAKE_SUBSTITUTES เปƒเบ™ qmake;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš Protocol Buffers เบชเปเบฒเบฅเบฑเบš C++ เปเบฅเบฐ Objective-C.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™