Qt Creator 10 ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฆด๋ฆฌ์Šค

Qt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋„๋ก ์„ค๊ณ„๋œ Qt Creator 10.0 ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ „์ ์ธ C++ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ๊ณผ QML ์–ธ์–ด์˜ ์‚ฌ์šฉ์ด ๋ชจ๋‘ ์ง€์›๋˜๋ฉฐ JavaScript๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ์˜ ๊ตฌ์กฐ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” CSS์™€ ์œ ์‚ฌํ•œ ๋ธ”๋ก์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ค€๋น„๋œ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” Linux, Windows ๋ฐ macOS์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์—์„œ:

  • ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ด๋™ํ•˜๊ณ  ์ˆจ๊ธฐ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰์ฐฝ(Locator)์—์„œ ์ค‘์•™ ์ •๋ ฌ ํŒ์—…์ฐฝ์—์„œ ์—ด๊ธฐ ๋ชจ๋“œ ์‚ฌ์šฉ ์‹œ ๋งˆ์ง€๋ง‰์— ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ๊ธฐ์–ต๋‚˜๋˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • LLVM์˜ ๋ฒˆ๋“ค ๋ฒ„์ „์€ Clang์˜ C++16 ํ‘œ์ค€์— ๋Œ€ํ•œ ์ง€์›์ด ํ™•์žฅ๋˜๊ณ  Qt Creator์™€ Clangd ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ํ–ฅ์ƒ๋œ ๋ฆด๋ฆฌ์Šค 20์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ClangFormat ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด์ œ C++ ์ฝ”๋“œ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ (include๋ฅผ ํ†ตํ•ด) ".ui" ํŒŒ์ผ ๋˜๋Š” ์ •์˜๋œ ์–‘์‹์˜ ์ด๋ฆ„์„ ๋ฐ”๊พผ ํ›„ C++ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋„๊ตฌ(๋„๊ตฌ > C++ > ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜ ์ฐพ๊ธฐ)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” LSP(์–ธ์–ด ์„œ๋ฒ„ ํ”„๋กœํ† ์ฝœ) ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์–ธ์–ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ™” ๊ณ„์ธต ๋ณด๊ธฐ ๋ชจ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • QML ์ฝ”๋“œ ๋ชจ๋ธ์ด Qt 6.5์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—๋Š” ์ƒ‰์ƒ ์†์„ฑ์„ ๋„๊ตฌ ์„ค๋ช…์œผ๋กœ ๋ฏธ๋ฆฌ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • QML ํŒŒ์ผ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์™ธ๋ถ€ ๋ช…๋ น ์ •์˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋‚ด์žฅ ํ˜•์‹ ์ง€์ • ๋…ผ๋ฆฌ ๋Œ€์‹  qmlformat ํ˜ธ์ถœ).
  • Qt ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ ํƒ์  Qt Language Server ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ค์น˜ํ•  ๋•Œ QML Language Server๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(Qt Quick > QML/JS ํŽธ์ง‘ > ์ง€๊ธˆ qmlls ์‚ฌ์šฉ).
  • CMake ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ ์‚ฌ์ „ ์„ค์ •(cmake-presets) ์ง€์›์ด ๋ฒ„์ „ 5๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ด์ œ ${pathListSep} ๋ณ€์ˆ˜, "include" ๋ช…๋ น, ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋„๊ตฌ์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์ „๋žต์— ๋Œ€ํ•œ ์ง€์›์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • CMake ๊ด€๋ จ ํŒŒ์ผ์˜ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์ด ํŽธ์ง‘๊ธฐ(CMake > ํฌ๋งทํ„ฐ)์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด cmake-format ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "ํ”„๋กœ์ ํŠธ > ์‹คํ–‰ ์„ค์ • > ๋ฐฐํฌ ๋‹จ๊ณ„ ์ถ”๊ฐ€" ์˜ต์…˜์„ ํ†ตํ•ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” "cmake --install"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์„ค์น˜ ๋‹จ๊ณ„๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Docker์—์„œ ๋นŒ๋“œํ•  ๋•Œ Clangd ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋ชจ๋ธ์˜ ์›๊ฒฉ ์ฒ˜๋ฆฌ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ClangFormat ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” Docker ์ปจํ…Œ์ด๋„ˆ์— ํ˜ธ์ŠคํŒ…๋œ ์™ธ๋ถ€ ํŒŒ์ผ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒ๋“œ์šฉ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์›๊ฒฉ ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋นŒ๋“œ ํ™˜๊ฒฝ ์„ค์ •์— ์žˆ๋Š” Open Terminal(ํ„ฐ๋ฏธ๋„ ์—ด๊ธฐ) ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์‹œ์Šคํ…œ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด ์ˆ˜ ์žˆ๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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