Qbs ๋นŒ๋“œ ๋„๊ตฌ์˜ ์ตœ์ข… ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Qt ํšŒ์‚ฌ ะพะฟัƒะฑะปะธะบะพะฒะฐะปะฐ ์กฐ๋ฆฝ ๋„๊ตฌ QBS 1.13 (Qt ๋นŒ๋“œ ์Šค์œ„ํŠธ). ์ด๊ฒƒ์€ Qt Company์—์„œ ์ œ์ž‘ํ•œ Qbs์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค. ์•„๊นŒ ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜์ž ๋ฐ›์•„ ๋“ค์—ฌ Qbs ๊ฐœ๋ฐœ์„ ์ค‘๋‹จํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Qbs๋Š” qmake๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ CMake๋ฅผ Qt์˜ ์ฃผ์š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

  • Qbs ๋ชจ๋“ˆ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ข…์†์„ฑ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์—์„œ pkg-config ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‹œ์Šคํ…œ์— pkg-config๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ OpenSSL์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ Qbs ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 'Depends { name: "openssl" }'์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Qt ๋ชจ๋“ˆ์˜ ์ž๋™ ๊ฐ์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋” ์ด์ƒ setup-qt ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœํ•„์„ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ข…์†์„ฑ์— ์ง€์ •๋œ ๋ชจ๋“  Qt ๋ชจ๋“ˆ์€ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ณ„ ๋ช…๋ น ์ˆ˜์ค€์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ์กฐ๋ฆฝ ์ž‘์—… ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งํฌ๋Š” ๋Œ€๊ทœ๋ชจ I/O ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ๋‹นํ•œ ์–‘์˜ RAM์„ ์†Œ๋น„ํ•˜๋ฏ€๋กœ ๋ง์ปค์—๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋‹ค๋ฅธ ์‹œ์ž‘ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ โ€œqbs โ€”job-limits linker:2,compiler:8โ€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ถœ๋ ฅ์šฉ ์Šคํ… ํŒŒ์ผ์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ทœ์น™์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ์‹œ์ž‘ ๋ถ€๋ถ„์— "import qbs" ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ์„ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ๋กœ์šด install ๋ฐ installDir ์†์„ฑ์ด Application, DynamicLibrary ๋ฐ StaticLibrary ์š”์†Œ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ง์ปค ์Šคํฌ๋ฆฝํŠธ์˜ ์žฌ๊ท€์  ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    GNU ๋ง์ปค;

  • C++์˜ ๊ฒฝ์šฐ ld.gold, ld.bfd ๋˜๋Š” lld ๋ง์ปค๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก cpp.linkerVariant ์†์„ฑ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Qt๋Š” ๋Œ€๊ทœ๋ชจ Qt ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์„ ์œ„ํ•ด Qt.core.enableBigResources ์†์„ฑ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” AndroidApk ์š”์†Œ ๋Œ€์‹  ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • qmake์˜ QMAKE_SUBSTITUTES์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ…์ŠคํŠธ ํ…œํ”Œ๋ฆฟ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • C++ ๋ฐ Objective-C์šฉ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ ํ˜•์‹์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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