Qbs 1.21 ๋นŒ๋“œ ๋„๊ตฌ ์ถœ์‹œ ๋ฐ Qt 6.3 ํ…Œ์ŠคํŠธ ์‹œ์ž‘

Qbs 1.21 ๋นŒ๋“œ ๋„๊ตฌ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Qt Company๊ฐ€ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์„ ๋– ๋‚œ ์ดํ›„ Qbs์˜ ์ง€์†์ ์ธ ๊ฐœ๋ฐœ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ค€๋น„ํ•œ ์—ฌ๋Ÿ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค. Qbs๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ์ข…์†์„ฑ ์‚ฌ์ด์— Qt๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ Qbs ์ž์ฒด๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Qbs๋Š” ๋‹จ์ˆœํ™”๋œ ๋ฒ„์ „์˜ QML ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ๋ชจ๋“ˆ์„ ์—ฐ๊ฒฐํ•˜๊ณ  JavaScript ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ ๊ทœ์น™์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์œ ์—ฐํ•œ ๋นŒ๋“œ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Qbs์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋Š” IDE์—์„œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ์ƒ์„ฑ ๋ฐ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ž๋™ํ™”ํ•˜๋„๋ก ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Qbs๋Š” make ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉฐ make ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ๊ฐ™์€ ์ค‘๊ฐœ์ž ์—†์ด ์ž์ฒด์ ์œผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐ ๋ง์ปค์˜ ์‹œ์ž‘์„ ์ œ์–ดํ•˜์—ฌ ๋ชจ๋“  ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ ๋ฐ ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—… ์‹คํ–‰์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ๊ณผ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ Qbs๋ฅผ ์‚ฌ์šฉํ•œ ์žฌ๊ตฌ์ถ• ์„ฑ๋Šฅ์€ make๋ณด๋‹ค ๋ช‡ ๋ฐฐ๋‚˜ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์žฌ๊ตฌ์ถ•์€ ๊ฑฐ์˜ ์ฆ‰๊ฐ์ ์ด๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋Œ€๊ธฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2018๋…„์— Qt Company๋Š” Qbs ๊ฐœ๋ฐœ์„ ์ค‘๋‹จํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Qbs๋Š” qmake๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ CMake๋ฅผ ์žฅ๊ธฐ์ ์œผ๋กœ Qt์˜ ์ฃผ์š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Qbs์˜ ๊ฐœ๋ฐœ์€ ์ด์ œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ธ๋ ฅ๊ณผ ๊ด€์‹ฌ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์›ํ•˜๋Š” ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ๋กœ ๊ณ„์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Qt Company ์ธํ”„๋ผ๋Š” ๊ฐœ๋ฐœ์— ๊ณ„์† ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Qbs 1.21์˜ ์ฃผ์š” ํ˜์‹ :

  • ๋ชจ๋“ˆ ๊ณต๊ธ‰์ž(๋ชจ๋“ˆ ์ƒ์„ฑ๊ธฐ)์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žฌ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Qt ๋ฐ Boost์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฒฝ์šฐ ์ด์ œ ๋‘˜ ์ด์ƒ์˜ ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ƒˆ๋กœ์šด qbsModuleProviders ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•  ๊ณต๊ธ‰์ž๋ฅผ ์ง€์ •ํ•˜๊ณ , ๋‹ค๋ฅธ ๊ณต๊ธ‰์ž๊ฐ€ ์ƒ์„ฑํ•œ ๋ชจ๋“ˆ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ๊ฐœ์˜ ๊ณต๊ธ‰์ž "Qt" ๋ฐ "qbspkgconfig"๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ ๊ณต๊ธ‰์ž๋Š” ์‚ฌ์šฉ์ž์˜ Qt ์„ค์น˜(qmake ๊ฒ€์ƒ‰์„ ํ†ตํ•ด)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ํ•ด๋‹น ์„ค์น˜๊ฐ€ ์—†์œผ๋ฉด ๋‘ ๋ฒˆ์งธ ๊ณต๊ธ‰์ž๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” Qt(pkg-config ํ˜ธ์ถœ์„ ํ†ตํ•ด): CppApplication { ์ข…์† { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
  • ์š”์ฒญ๋œ ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๊ณต๊ธ‰์ž์— ์˜ํ•ด ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ pkg-config๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ์ƒ์„ฑ์„ ์‹œ๋„ํ•˜๋Š” "fallback" ๋ชจ๋“ˆ ๊ณต๊ธ‰์ž๋ฅผ ๋Œ€์ฒดํ•˜๋Š” "qbspkgconfig" ๊ณต๊ธ‰์ž๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "fallback"๊ณผ ๋‹ฌ๋ฆฌ "qbspkgconfig"๋Š” pkg-config ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  ๋‚ด์žฅ๋œ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ".pc" ํŒŒ์ผ์„ ์ง์ ‘ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž‘์—… ์†๋„๋ฅผ ๋†’์ด๊ณ  ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํŒจํ‚ค์ง€ ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. pkg-config ์œ ํ‹ธ๋ฆฌํ‹ฐ.
  • ๋ฏธ๋ž˜์˜ C++ ํ‘œ์ค€์„ ์ •์˜ํ•˜๋Š” C++23 ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GCC ํˆดํ‚ท์— Elbrus E2K ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Android ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ "--build-id" ๋ง์ปค ํ”Œ๋ž˜๊ทธ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด Android.ndk.buildId ์†์„ฑ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • capnproto ๋ฐ protobuf ๋ชจ๋“ˆ์€ qbspkgconfig ๊ณต๊ธ‰์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ˆ˜์ • ์‹œ๊ฐ„์„ ์ถ”์ •ํ•  ๋•Œ ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด FreeBSD์—์„œ ์†Œ์Šค ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ ์ถ”์  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Conan ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ๋„๋ก ConanfileProbe.verbose ์†์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Language Server ๋ฐ JsonRpc 6.3 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ "Qt Language Server"๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Qt 2.0 ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์•ŒํŒŒ ํ…Œ์ŠคํŠธ ์‹œ์ž‘์— ๋Œ€ํ•ด ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด Qt Core์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ๋ฐ QML ์œ ํ˜• MessageDialog๊ฐ€ Qt Quick Dialogs ๋ชจ๋“ˆ์— ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ™” ์ƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณตํ•ฉ Qt Shell ์„œ๋ฒ„์™€ ์‚ฌ์šฉ์ž ์ •์˜ ์‰˜ ํ™•์žฅ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ Qt Wayland Compositor ๋ชจ๋“ˆ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .

Qt QML ๋ชจ๋“ˆ์€ QML ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ C++์˜ ํด๋ž˜์Šค๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋Š” qmltc(QML ์œ ํ˜• ์ปดํŒŒ์ผ๋Ÿฌ) ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Qt 6.3์˜ ์ƒ์šฉ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด Qt Quick Compiler ์ œํ’ˆ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ œํ’ˆ์—๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ QML ์œ ํ˜• ์ปดํŒŒ์ผ๋Ÿฌ ์™ธ์—๋„ QML ํ•จ์ˆ˜ ๋ฐ ํ‘œํ˜„์‹์„ C++ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋Š” QML ์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Qt Quick Compiler๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด QML ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์ด ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋žจ์— ๋” ๊ฐ€๊นŒ์›Œ์งˆ ๊ฒƒ์ด๋ฉฐ, ํŠนํžˆ ํ™•์žฅ์„ ์ปดํŒŒ์ผํ•  ๋•Œ ํ•ด์„๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ์‹œ์ž‘ ๋ฐ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์•ฝ 30% ๋‹จ์ถ•๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. .

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€