๋๋ ์ด๊ฒ์ด ์ฝ๊ฐ์ ๋จ๊ฑฐ์ด ์ฃผ์ ์ด๊ฑฐ๋ ์ ์ด๋ " ์๋ฌด๋ ์ค์ ๋ก ๊ทธ๊ฒ์ ํ๊ณ ์ถ์ดํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌด๋ ๊ทธ๊ฒ์ ๋ํด ํ ๋ก ํ๊ณ ์ถ์ดํ์ง ์๋๋ค "๋ ์ฃผ์ ๋ผ๋
๊ทธ๋์ ํ์ฌ Godot๋ SCons๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๊ทธ๊ฒ์ด ๋งค์ฐ ๊ฐ๋ ฅํ ๋น๋ ์์คํ
์ด๊ณ (๊ธฐ๋ณธ์ ์ผ๋ก Python์ ์ฌ์ฉํ์ฌ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์) Godot์์ ์ค์ ํ๋ ๋ฐฉ์์ด ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ ์ด ์๋ ๊ฒ์ ์๋๋๋ค. ์ฃผ๋ก ๋งค์ฐ ๋๋ฆฌ๊ณ (๊ธฐ๋ณธ์ ์ผ๋ก SCons ๋น๋ ํ์ผ์ Python ์คํฌ๋ฆฝํธ์ด๊ณ ๋๋ถ๋ถ์ Python ์ธํฐํ๋ฆฌํฐ๋ ์คํ ์๋์์ ํนํ ๋ฐ์ด๋์ง ์์ต๋๋ค) ์๋์ ์ผ๋ก ์ธ๊ธฐ๊ฐ ๋ฎ๊ณ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ด์ ๋ํ ๋ง์ ๋ฆฌ์์ค ๋๋ ๋ฌธ์.
๊ฒ๋ค๊ฐ, ๋๋ ๊ฐ์ธ์ ์ผ๋ก ๋น๋ ์์คํ
์ฝ๋๋ก ์ผ๋ง๋ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ณ ์์
ํ๊ธฐ ์ฌ์ด์ง๋ ๋ชจ๋ฅด์ง๋ง, ์ ์๊ฐ์๋ "์ด ์ฝ๋๋ฅผ ๋ง์ง์ง ๋ง์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๋๋ฅผ ๊นจ๋จ๋ฆด ์ํ์ด ์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ๋ค์ ์๋์ํค๋ ค๋ฉด ์ง๋ฃจํ๊ณ ๊ณ ํต์ค๋ฌ์ด ์์
์ ํด์ผ ํฉ๋๋ค."
์ด์ Godot์ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ๋จ์ํ์ง ์๊ณ ๊ทธ๊ฒ์ด SCons๊ฐ ๋น๋ ์์คํ ์ผ๋ก ์ ํ๋ ํฐ ์ด์ (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์์คํ ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ํฌ๊ฒ ๊บผ๋ฆฌ๋ ์ด์ )๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. Godot์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์๋ ์ ์ผํ ๋น๋ ์์คํ ์ ๋๋ค. ๊ทธ๋๋ ๋ด ์๊ฐ์ด ํ๋ ธ๋ค๋ ๊ฑธ ์ฆ๋ช ํด ์ฃผ์ธ์.
๊ทธ๋ ๋ค๋ฉด Meson์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฌด์์ ์ ๊ณต ํ ์ ์์ต๋๊น?
Meson์ ์ข
์์ฑ ์์คํ
์ธ wrap
์ฌ์ฉํ๋ฉด ์ ์ฅ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ฉ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋(๊ณต์ ๋ฐ ์ฌ์ฉ์ ์ง์ ๋ชจ๋)์ ๋จ์ํ 'ํ์ ํ๋ก์ ํธ'๋ก ํฌํจ(๋ฐ ์์ฒด ์ ์ฅ์๋ก ์คํ๋ก๋)ํ์ฌ ๊ธฐ๋ณธ ์ ์ฅ์์ ํฌ๊ธฐ๋ฅผ ๋์ฑ ์ค์ผ ์ ์์ต๋๋ค. [ wrap
]
์ด์ ๋ํด SCons๊ฐ ์ด๋์ ์๋์ง ๋ชจ๋ฅด์ง๋ง Meson์ Travis ๋ฐ AppVeyor์ ๊ฐ์ CI ๋๊ตฌ์ ์ ์๋ํ๋๋ก ์ค๊ณ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. [CI]
Meson์ ๋ํ ํ์งํ๋ฅผ ์ด๋ ์ ๋ ์ง์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง Godot๊ฐ ์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ๋ค๋ฅธ gettext
๊ธฐ๋ฐ์ผ๋ก ๋ณด์ด๋ฏ๋ก ์ด๊ฒ์ด ์ฌ๊ธฐ์์ ์ผ๋ง๋ ํธํ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. [ํ์งํ]
ํ์ฌ Godot๋ ๋จ์ ํ ์คํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ง๋ง( godot-test repo๋ ํ๋์ด ์ ์ ๊ฒ ๊ฐ์ต๋๋ค) Meson์ ๊ทธ๋ฌํ ํ ์คํธ๋ฅผ ์ํํ๋ ๋ฐ ์ ํญ์ ์ธ ์ง์์ ํ๊ณ ์์ผ๋ฉฐ ์ด๋ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค. [๋จ์ ํ ์คํธ]
Visual Studio์ XCode ๋ชจ๋์ ๋ํ ๊ด๋ จ ํ์ผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๊ฒ ์ธ์๋ Meson์ IDE ๋ฐ ๊ธฐํ ๋น๋ ๋๊ตฌ์์ ํตํฉ์ ํ์ฉํ๋ API์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์ด๋ VS๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์์ค์ฝ๋. [IDE ํตํฉ]
์ด๊ฒ์ Godot๊ฐ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ํ์๋ก ํ๋ ๋ชจ๋ ๊ฒ(ํฌ๋ก์ค ์ปดํ์ผ ์ง์, ์์ค ์์ฑ, ์ธ๋ถ ๋ช
๋ น ์คํ ๋ฑ)์ ์ง์ํ๋ ๊ฒ์ ์ถ๊ฐ๋ฉ๋๋ค.
์์คํ
, GNOME, ElementaryOS, Xorg, Mesa์ ๊ฐ์ ๋ณต์กํ ํ๋ก์ ํธ์ ๊ฐ์ด ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์๋ ๋น๋ ์์คํ
์์ด ๋ถ๋ช
ํฉ๋๋ค.
์ด๋ค ์ฝ์,ํ์ง๋ง ๋ ์ด๋ป๊ฒ ์๊ธ์๋ณด๊ณ , ์ด๊ฒ์ ๊ฐ๋ ์ฆ๋ช ์ ์๋ ํ ์์๋ ์์ ์ด ๋ ์ ์๋ค. ๋ํ ์ด ๊ธ์ ์ฝ๊ณ ์๋ Meson ์ ๋ฌธ๊ฐ/์ด์ฑํฌ์ด ์๋ค๋ฉด, ์ ๊ฐ ๋ช ๊ฐ์ง ์๋ชป ์๊ณ ์๋ ๋ถ๋ถ์ด ์์ ์ ์์ผ๋ฏ๋ก ์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋ณด๋ด์ฃผ์ญ์์ค(Meson ๋ฐ SCons ๋ชจ๋).
๊ฑด๋ฐฐ!
๋ด๊ฐ ์ดํดํ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ๋น๋ ์์คํ ๋๊ตฌ๋ ๋ค์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๋๋ Meson์ ๋ชจ๋ฅด์ง๋ง ์์ ๋ชจ๋ ๊ฒ์ ์ ๊ณตํ๋ค๋ฉด ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค (๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ์์ง ์์๋ค๋ฉด). ๋ฌผ๋ก ๋๊ตฐ๊ฐ๋ Meson์์ ๋น๋ ์์คํ ์ ๋ค์ ์์ฑํ๋ ๊ทน์ฌํ ๊ณ ํต์ ๊ฒช์ด์ผ ํ๊ณ ๋๊ตฌ์ ๋น๋ ์๊ฐ์ด SCons๋ณด๋ค Godot์๊ฒ ํจ๊ณผ์ ์ผ๋ก ๋ ๋ซ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ์ด์ผ ํฉ๋๋ค.
๋ช๋ช ์ 3์ ์์กด์ฑ์ Godot๋ก ์ปดํ์ผ๋๋ ํจ์น๋ฅผ ์๊ตฌํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. Wrap์ ํจ์น ์ง์์ด ์๋ค๋ ๊ฒ์ ์์์ง๋ง ํจ์น๋ ๋ค์ด๋ก๋ํ ์ ์๋ ์ด๋๊ฐ์ ์์ด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ฌ์ ํ ์ ์ฅ์์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ์ผ๋ถ๋ ์ ์ฒด ๋น๋์ ์ ์ฉํด์๋ ์ ๋๋ ํน์ ์ปดํ์ผ ํ๋๊ทธ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฌํ ๊ฐ๋ ์ฆ๋ช ์ ๋งค์ฐ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ ๋ฒ์งธ ์ ์ ๊ฒฝ์ฐ,์ด ๋ฐฉ๋ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ (Godot)์ ๋ํ ๋น๋ ์๋์ ์ฐจ์ด๋ฅผ ๋ณผ ์ ์์ต๋๋ค, ์ฐ๋ฆฌ๋ ์ผ๋ง๋ ์ฝ๊ฒ (๋๋ ๋ ๋ณต์กํ) ์ฐ๋ฆฌ์ ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ ๋ณผ ์ ์์ต๋๋ค, ์ฐ๋ฆฌ๋ ๊ต์ก์ ๋ง๋๋ ์ ํ์๋ณด๋ค ์ฝ๊ฒ ์ฐจ์ด๋ฅผ ๋์ ๋น๊ตํ ์ ์์ต๋๋ค ์ ๊ณตํ ์ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ถ์ธกํฉ๋๋ค.
--
์, ๊ฐ์ธ์ ์ผ๋ก ์ ๋ ์ด์ ๋ํด ์ฐฌ์ฑ๋ ๋ฐ๋๋ ํ์ง ์๋๋ค๊ณ ๋งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด ๋น๋ ์์คํ ์ ๋ณ๊ฒฝํ๋ ๋์ (๋๋ ์ด์ ์?) ์ถ๊ตฌํด์ผ ํ ๋ ๋ฎ์ ์ฑ๊ณผ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ์ด ์ค์ํ ์์ ์์ 3.0๊ณผ ์ฒซ ๋ฒ์งธ ํจ์น๊ฐ ์ต์์ ํํ๋ก ์ ์ง๋๋๋ก ์ต๋ํ ๋ง์ ์์ด ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋น๋ ์์คํ ์ ๊ฐ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ์, ๋๋ CI ๋น๋ ์๊ฐ๊ณผ ๋ชจ๋ ธ ๋น๋ ์ํฉ์ ๋ฒ๊ฑฐ ๋ก์๋ณด๊ณ ์ถ์๋ฐ. (๋๋ ์ด๊ฒ์ด akien ์ TODO/๋ถ๋ง ๋ชฉ๋ก์ ์๋ค๊ณ ์๊ฐํฉ๋๊น?)
๋ํ Windows์์ ๋ฒ๊ทธ๊ฐ ์๋ ๋ณ๋ ฌ ๋น๋๋ ์ง์ฆ๋์ง๋ง, ์ด๋ ๊ฐ์ธ์ ์ผ๋ก ์์ ๋๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
TL;DR:
๋ด ์๊ฒฌ. :)
๋๋ 3.0์ ์ถ์ํ๊ณ ๋ค์ ๋ฆด๋ฆฌ์ค(3.0.1, 3.1)์ ์ง์คํ๋ ๊ฒ์ด ๊ธฐ๋ก์ ์ํด ์ด๊ฒ๋ณด๋ค ์ฐ์ ํด์ผ ํ๋ค๊ณ ์ ๋์ ์ผ๋ก ๋ฏฟ์ต๋๋ค.
๊ทธ๊ฒ์ ๋จ์ง ๋ค๋ฅธ ๊ฐ๋ฐ์ / ํนํ ๊ธฐ์ ์ ์ ํตํ ์ต์ข
์ฌ์ฉ์์ ์ด์ต์ ์ํด ์ ๋ง ์ดํ ๋ช
(buildsystems์ ๋ํ ์์
์ ๊ฐ์ดํ์ง ์๋ ์ด์ ๋ ์ - ์ค์ ์ทจ์ํ์ง ์์ต๋๋ค, ๊ทธ๊ฒ์ DEVS '์ ์ฐธ์ฌ์์ ์ถ์ ์ฝ๊ฒํ๊ธฐ ์ํด ๋ณด๋ , ๊ทธ๋ฌ๋ ๊ถ๊ทน์ ์ผ๋ก ์ต์ข
์ฌ์ฉ์์ ํ๋ณต์ด ๋ชฉํ์
๋๋ค) ์ด ์ ์ฒด "๊ธฐํ ๋น์ฉ"์ด ์์ต๋๋ค. ๋น๋ ์์คํ
๊ฐ์ ์ ์์๋ ์๊ฐ(๋๋ ์์ฒญํ ์ฌ๋์ ๋ฐ๋ผ ์์ค/๋ญ๋น)์ด ํ๋ก์ ํธ ์์ฒด ๊ฐ์ ์ ์ฌ์ฉ๋ ์ ์๋ ๊ฒฝ์ฐ. (๋น์ ์ด ๋์ ๊ฐ์์ ์ด์จ๋ C++ ์ชฝ์์ ์ค์ ๋ก ์ผํ ์ ์๋ค๋ฉด.)
๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก SCons๋ ์ค์ ๋ก "๊ทธ๋ฅ ์๋"ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์์๊ฒ๋ ์๋ง๋ ์ถฉ๋ถํ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ๊ฒฐ๊ตญ์๋ ์ผ์ด๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ์ผ์ด์ง๋ง 3.1 ๋๋ 3.2์ ๋ํด์๋ ์จ์ ์ฐธ์ง ์๊ณ ์์ต๋๋ค. ์ค์ ๋ก ์์ ์ ์์ํ๊ธฐ์ ์ถฉ๋ถํ ์ง์์ ์ป๋๋ค๋ฉด.
์ด ๋ชจ๋ ๊ฒ์ด ๋งํ์ง๋ง, ์งํ ์ํฉ์ ๊ธฐ๊บผ์ด ๋ฐ๋ฅด๋ ค๋ ์ฌ๋๋ค์ ์ํด ์ด๋ฒ ์ฃผ ํ๋ฐ์ POC๋ฅผ ์์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋น๋ถ๊ฐ์ ์ด์ ๋ํ ํ ๋ฆฌํ์คํธ๋ฅผ ์ด์ง ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ค์ ๋ก SCons๊ฐ ๋๋ฆฌ๋ค๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ์ ์ฐ์ฑ(์ฐ๋ฆฌ๊ฐ ๋ง์ ์ด์ ์ ์ทจํ๋)์ ์๋ง๋ ๋ค๋ฅธ ์ด๋ค ๊ฒ๊ณผ๋ ๋น๊ตํ ์ ์์ ๊ฒ์ ๋๋ค. SCons๋ ๋ํ ๋งค์ฐ ์ ์ฆ๋์์ผ๋ฉฐ ๋น๋๋ฅผ ๋ง์น์ง ์๋๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
์์งํ ๋งํด์, ๋๊ตฐ๊ฐ ๊ฐ ์ ์ฒด ๋น๋ ์์คํ (๋จ์ํ ๊ฐ๋ ์ฆ๋ช ์ด ์๋๋ผ)์ ์ฌ์์ฑ ๋ ๊ฐ๋จํ๊ฑฐ๋ (์ฝ๋๊ฐ ํจ์ฌ ์ ์) ํจ์ฌ ๋น ๋ฅด๋ค ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ์ง ์๋ ํ, ์ ๋ ๋ค๋ฅธ ์ด๋ค ๊ฒ๋ ๊ณ ๋ คํ์ง ์์ ๊ฒ์ ๋๋ค.
์, ๊ฐ์ธ์ ์ผ๋ก ์ ๋ ์ด์ ๋ํด ์ฐฌ์ฑ๋ ๋ฐ๋๋ ํ์ง ์๋๋ค๊ณ ๋งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด ๋น๋ ์์คํ ์ ๋ณ๊ฒฝํ๋ ๋์ (๋๋ ์ด์ ์?) ์ถ๊ตฌํด์ผ ํ ๋ ๋ฎ์ ์ฑ๊ณผ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ค์ ๋ก ํด๋ก์ด ๊ฒ์ ์๋๋๋ค. ๋ด ๋ง์, ๋๋ถ๋ถ์ Godot ๊ธฐ๊ณ ์๋ค์ ์ฌ๊ฐ ์๊ฐ์ ์ผํ๊ณ ๊ทธ๋ค์ด ์ํ๋ ์ผ์ ํฉ๋๋ค. @NullConstant ์ ๊ฒฝ์ฐ "์ด ์์ ์ ์ํํ๊ฑฐ๋ ์๋ฌด ์์ ๋ ์ํํ์ง ์์"(๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์ถ์ง ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์ค์ C++ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์์ ํ๊ณ ์ต์ํ์ง ์์ ๊ฒ์ ๋ํ ๋ฒ๊ทธ ์ฌ๋ฅ์ด ๋ ์ด๋ ต๋ค๋ ์๋ฏธ)์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ผ์ ๋๋ค.
๋ํ, "๋ ์ข์ ์ผ์ด ์๋ค"๋ ์ฃผ์ฅ์ IMO์์ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฌผ๋ก ์๋ฌด๊ฒ๋ ๊นจ์ง์ง ์๊ณ ๋ฆด๋ฆฌ์ค์ ๊ฐ๊น์์ง์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ ๋๊น์ง๋ ์๋ฌด ๊ฒ๋ ๋ณํฉ ๋์ง ์์ ๊ฒ์ ๋๋ค. ๋ ์ค์ํ ์ผ์ด ์๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ด๊ฒ์ด ์์๋ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ด ์์ ์ ์ํํ๋ ์ฌ๋์ด ํผ์ ์ด ์์ ์ ์ํํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ํต์ฌ ๊ฐ๋ฐ์๊ฐ ํน์ ์ง๋ฌธ์ ๋ต๋ณํ ์ ์์ง๋ง ๊ทธ ์ด์์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด SCons๊ฐ ๊ต์ฒด๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ ์ด์ ์ ๋๋ค. ์ง๊ธ๊น์ง ์๋ฌด๋ ์์ ๋๋ฝํ๋ ๊ฒ์ ์ํ์ง ์์์ต๋๋ค. ์ ์ Bullet์ ๋ํด ๋งํ๋ฏ์ด ๋๊ตฐ๊ฐ๋ ๊ทธ๊ฒ์ ์๋์ํค๊ณ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ๊ณ ๋ ๋ซ๋ค๋ ๊ฒ์ ์ฆ๋ช ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๋ฆฌ๋ ํ์ ์ ์ง์ ๋จธ๋ฌผ ๊ฒ์ ๋๋ค.
๊ทธ๋๋ SCons๋ ๋๋ฆฌ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ค์ง ๋๋ฆฌ์ง๋ ์์ง๋ง ์งํ ์ํ ๋ฐ ์บ์์ ๊ฐ์ ๋ฌธ์ ๋ก ์ธํด ์ฌ๊ตฌ์ถ์ด ๋๋ ค์ง๋ฏ๋ก(๋์คํฌ I/O๋ฅผ ์ฌ์ฉํ์ฌ ์บ์์์ ์ฝ๋ ๊ฒ์ด ๋๋ ค์ง) ์ฌ๊ตฌ์ถํ ๋ ํด๋น ๊ธฐ๋ฅ์ ๋นํ์ฑํํฉ๋๋ค. ์์ ์ ์์ํ๋ ๋ฐ ์ฝ๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ๊ทธ ํ์๋ ์๋นํ ๋น ๋ฆ ๋๋ค.
Meson์ด ํจ์ฌ ๋ ๋น ๋ฅผ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ๊ธฐ๊บผ์ด ์๋ํ๋ค๋ฉด ๋๋ ๋ฐ๋ํ์ง ์์ต๋๋ค.
์ค, ๋ฌผ๋ก , ๋๊ตฐ๊ฐ๊ฐ ์๊ฐ์ ๋ค์ฌ์ ์ ํ์ ๋ณด์ฆํ ๋งํผ ์ถฉ๋ถํ ํฐ ๊ฐ์ ์ฌํญ์ ๋ณด์ฌ ์ค๋ค๋ฉด ์ ๋ ์ ์ ์ผ๋ก ์ฐฌ์ฑํฉ๋๋ค. :)
๋ด๊ฐ ๋งํ๋ฏ์ด, ๋๋ C++ ๋ฒ๊ทธ๋ฅผ ์ฌ๋ฅํ๊ฑฐ๋ ๊ทธ ์ ๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ผ์ ๋ค๋ฃฐ ์ค๋น๊ฐ ๋์ด ์์ง ์์ผ๋ฏ๋ก ๋์ ์ด ์ผ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๋(๋ฐ/๋๋ ๋ฏธ๋์ ์ด ์ผ์ ํ๋ ๋ค๋ฅธ ์ฌ๋)์๊ฒ ๋๋ฌํ ์ ์๋ ๋งค์ฐ ๊นจ๋ํ๊ณ ์ด์ค์ ์ธ ๋ชฉํ๋ฅผ ์ ๊ณตํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ SCons์ ์๋๊ฐ ๋์ฐํ ์ ๋๋ก
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์๋ง๋ ์ ฐ์ด๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์๋ ์์ฑํ๊ธฐ ์ํด ํ์ด์ฌ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ๋๋ค. meson์ ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
Meson์ ๋์์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ ๊ฐ์ ์ฌํญ์ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ณผ ๊ฒ์ด๋ค.
๊ทธ๊ฒ์ ๋์์ด ๋์ด์๋ ์ ๋๋ฉฐ, ๋ถ๋ช ํ ๋ ๋์ ๊ฒฝ์ฐ ๊ทธ ๋์์ผ๋ก ์ด๋ํ๊ฑฐ๋ ์ ๊ณตํ์ง๋ ์์ต๋๋ค. ๋ ๊ฐ์ ๋น๋ ์์คํ ์ ์ง์ํด์ผ ํ๋ ๊ฒ์ ๋ฏธ์น ์ง์ ๋๋ค.
๋ง์ต๋๋ค. ๊ณต์ ํฉ๋๋ค.
๋๋ ์์ผ๋ก ๋ฉฐ์น /๋ช ์ฃผ์ ๊ฑธ์ณ ๊ทธ๊ฒ์ ํดํนํ๊ธฐ ์์ํ ๊ฒ์ด๊ณ , ์ด๊ฒ์ด ์๋ฌด ๋ฐ๋ ์งํ๋๋์ง, ๊ทธ๊ฒ์ด ์ง์ ์ผ๋ก ์ถ๊ตฌํ ๊ฐ์น๊ฐ ์๋ ๋ ธ๋ ฅ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
(๋ฒค์น๋งํฌ์ ๊ฐ์) ํ์ํ ์ ์๋ ๊ฒ์ด ์์ผ๋ฉด ๋ค์ ๋ณด๊ณ ํ๊ฒ ์ต๋๋ค.
meson์ด ์๋๋ผ ์์ผ๋ก ๋ช ์ฃผ ์์ msvc์์ Windows 64๋นํธ์ฉ godot under bazel์ ๋น๋ํ๋ ๋ฐ ํ์ํ ๊ฒ์ ํ์ธํ๊ธฐ ์ํด ํ ์คํธ๋ฅผ ํ ๊ฒ์ ๋๋ค.
Bazel์ ๋ ์งง์ ๋น๋ ์ค๋ช ๊ณผ ๋ ๋น ๋ฅธ ๋น๋๊ฐ ์ฅ์ ์ธ ๋ ๋ค๋ฅธ ์์คํ ์ ๋๋ค. ๋ํ Google์์ ์ ์ง ๊ด๋ฆฌํ๋ฏ๋ก ์๋ฌด๋ฐ๋ ๊ฐ์ง ์์ต๋๋ค.
์ด์จ๋ , ๋๋ ๊ทธ๊ฒ์ ํ์ธํ ์๋ ์์ง๋ง Godot๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์์๋๋ ๊ณ์ฐ ์๊ฐ์ 99%๊ฐ ์ปดํ์ผ๋ฌ์์ ์๋น๋ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. ๋ฐ๋ผ์ ๋น๋ ์ํํธ์จ์ด์ ์ค๋ฒํค๋๊ฐ ์ ํ ์๋ค๊ณ ํด๋ ๋น๋ ์๊ฐ์ด 1% ๊ฐ์ํฉ๋๋ค. ๋ ์ ์ ์ฝ๋์ ๋ ๋ง์ ์์ ์ฑ์ ํ์ฉํ์ง ์๋ ํ(๋๋ ๋ด๊ฐ ํ๋ ธ๋ค๊ณ ํ๋ช ๋ ๊ฒฝ์ฐ :)) 5% ๊ฐ์๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊นจ๋ํ ํด๋ก ์ ์์ ๋น๋ ์๋์ ๊ฒฝ์ฐ ํฐ ์ฐจ์ด๊ฐ ์๋์ง ์์ฌ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ตฌ์ถ ์๋๋ฅผ ๊ณ ๋ คํ๋ฉด ์ค์ํ ์ ์์ต๋๋ค. SCons๋ ํญ์ ๋ด๊ฐ ์ ์ปค๋ฐ์ ๊ฐ์ ธ์ฌ ๋ ๋ณ๊ฒฝ๋์ง ์์ ๋ง์ ๊ฒ์ ๋ค์ ๋น๋ํฉ๋๋ค(ํนํ OpenSSL ๋ฐ Bullet์ ๋ชจ๋ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ ๋น๋ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค).
์ ์ ๋งํ๋ฏ์ด SCons๋ ์์ํ๋ ๊ฒ์ด ๋๋ฆฝ๋๋ค(์ค์ ๋ก ์ปดํ์ผ์ ์์ํ๊ธฐ๊น์ง ๋ช ์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค). ๋ฌด์ํ ์ ์๋ ์ ์ฒด ์์ค๋ฅผ ๋น๋ํ๊ณ ์์ง๋ง ๋ผ์ธ๋ง ๋ณ๊ฒฝํ๊ณ ํ ์คํธ๋ฅผ ์ํด ์ปดํ์ผํ๋ ๊ฒฝ์ฐ ์ํฌํ๋ก๋ฅผ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ต๋๋ค(IMO๋ ๋น๋ ์์คํ ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋๋ค. ์ฝ๋๋ก ์์ ํ๋ ์ฌ๋๋ค์ ๋์ฐ์ญ์์ค) . ๋ฐ๋ผ์ 10๋ถ ๋น๋์์ 5์ด ๊ฐ์๋ ๊ด๋ จ์ด ์์ง๋ง 10์ด ๋น๋์์ 5์ด ๊ฐ์๋ ์ฃผ์ ๊ฐ์ ์ฌํญ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด์ ๊ด๋ จํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ๋์ง ์ฆ๋ช ํ๋ ค๋ฉด ๋ง์ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. @reduz๊ฐ ๋งํ๋ฏ์ด SCons๋ ๋น๋๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค์ง ์์์ผ๋ฉฐ ์ด๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋๋ค.
Bazel์ ๋ ์งง์ ๋น๋ ์ค๋ช ๊ณผ ๋ ๋น ๋ฅธ ๋น๋๊ฐ ์ฅ์ ์ธ ๋ ๋ค๋ฅธ ์์คํ ์ ๋๋ค. ๋ํ Google์์ ์ ์ง ๊ด๋ฆฌํ๋ฏ๋ก ์๋ฌด๋ฐ๋ ๊ฐ์ง ์์ต๋๋ค.
"Google์ด ์ค๋จํ ๊ฒ"์ด๋ผ๋ Wikipedia ๋ฒ์ฃผ๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. :)
@mhilbrunner ์๋์, ์ฌ์ ํ ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค https://github.com/bazelbuild/bazel
๊ทธ๋ค์ ์์ ์ ๊ตฌ๊ธ์ด ๊ทธ๊ฒ์ ๋ง๋ค์๋ค๊ณ ํด์ ๊ทธ๊ฒ์ด ์ค๋ซ๋์ ์กด์ฌํ ๊ฒ์ด๋ผ๋ ์๋ฏธ๋ ์๋๋ผ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๊ฒ์ ๊ฐ๋ฐ์ ์ํด C#์ ๋ฐ์๋ค์๊ธฐ ๋๋ฌธ์ Cake ์ ๊ฐ์ ๊ฒ์ ์๋ํด ๋ณผ ์๋ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ง์ ์๋ํ์ง ์์์ผ๋ฏ๋ก ๊ทธ๊ฒ์ ๋ํ ๋น์ ์ ์๊ฐ์ด ๊ถ๊ธํฉ๋๋ค. ํ ๊ฐ์ง๋ ์ ์ด๋ ์คํฌ๋ฆฝํธ๊ฐ Python๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ฒ์ ๊ฐ๋ฐ์ ์ํด C#์ ๋ฐ์๋ค์๊ธฐ ๋๋ฌธ์ Cake ์ ๊ฐ์ ๊ฒ์ ์๋ํด ๋ณผ ์๋ ์์ต๋๋ค.
Godot๊ฐ ๋๋ถ๋ถ C++ ํ๋ก์ ํธ์ด๊ณ C# ์ง์ ์์ด ์ปดํ์ผ๋ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด Godot๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด Mono ์ค์น๋ฅผ ์๊ตฌํ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Meson ๋๋ CMake(Ninja ์์ฑ๊ธฐ ํฌํจ)๊ฐ ์ ๊ณตํ๋ ์ฑ๋ฅ ์์ค์ Godot์ ๋ชฉ์ ์ ์ถฉ๋ถํด์ผ ํฉ๋๋ค.
@Calinou ๋น์ ์ด ๋ง์ ๊ฒ์ ๋๋ค. ๋น๋ก ๋ชจ๋๊ฐ C#์
ํธ์งํ๋ค:
๋ชจ๋ ธ ํ๋ ์ ์ํฌ๋ฅผ ํ์๋ก ๋ช ํํํ๊ธฐ๋ ์์ AAA ๊ฒ์ ์์ง์ด ๋ฐฉ๋ฒ์ ๋ ๋ง์ ๋์คํฌ ๊ณต๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณ ๋ (Godot)๊ฐ, ๋์๊ฒ ๋์๋ก ์๋ฆฌ๊ฐ ๋์ง ์๋๋ค ๊ตฌ์ถํ๊ธฐ ์ํด ์ค์น๋์ด์ผํฉ๋๋ค :
๊ฒ๋ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ์ง๊ธฐ์์ Mono ์ง์์ ํ๋์ฝ๋ฉํ๊ณ ๋ฐํ์์ C# ์คํฌ๋ฆฝํ ์ ์ง์ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฐ์งํ๊ณ Mono ํ๋ ์์ํฌ ๋๋ ์ ์ ํ ๋ด๋ณด๋ด๊ธฐ ํ ํ๋ฆฟ์ ์์ฒญํ๋ ์ผ๋ถ ๋ ผ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๋๋ CMake๋ฅผ ์ข์ํ๊ณ meson์ ๋ฉ์ง๊ฒ ๋ณด์ด์ง๋ง http://www.rojtberg.net/1481/do-not-use-meson ๊ธฐ์ฌ์ ๋์ํ๋ ๊ฒฝํฅ์ด
์ ๋ Godot๋ฅผ Meson์ผ๋ก ์ฎ๊ธฐ๊ธฐ ์ํ ๋ฐ๋๋ฆผ์ ํ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ํ์ฌ ์ ๊ฐ Godot์ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋ง๊ณ ์๋ ์ ์ผํ ๊ฒ(๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ)์ Scons์ ๋๋ค. ๋๋ ๋ช ๋ ์ ์ ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผ ํ๊ณ , ๋ด ํ์ ๋์ ์ด๋ณด๋ค ๋ ๊ณ ํต์ค๋ฌ์ด ์ ์ง์ ๊ฐ๋ฐ ๊ฒฝํ์ ์์๋ค.
์์ ๋งํฌ๋ ๊ธฐ์ฌ์๋ CMake๊ฐ ์ด๋ฏธ ์กด์ฌํ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ ๋ง์ ์ฃผ์ฅ์ด ์์ต๋๋ค. Meson์ ๋น๋ ํ์ผ์ ์ฝ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๊ณ Python๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์ ํ์ด ๋น ๋ฅผ ์ ์์ต๋๋ค. ์ด ์ค๋ ๋์ ๊ฒ์ํ๋ ๋ด์ฉ์ ํ์ํฌ๊ฐ ์๋ฃ๋๋ฉด pull ์์ฒญ์ด ๋ณํฉ์ ๋ํด ๊ณ ๋ ค๋ ์ ์์ต๋๊น?
์ด ์ค๋ ๋์ ๊ฒ์ํ๋ ๋ด์ฉ์ ํ์ํฌ๊ฐ ์๋ฃ๋๋ฉด pull ์์ฒญ์ด ๋ณํฉ์ ๋ํด ๊ณ ๋ ค๋ ์ ์์ต๋๊น?
๊ณ ๋ ค๋์ง๋ง SCons๋ณด๋ค ์ ๋ฆฌํ ๊ฒ์ผ๋ก ์ ์ฆ๋์ด์ผ ํฉ๋๋ค.
CMake๋ฅผ ์ฌ์ค์ ํ์ค์ด ์๋ ๋ ๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ฌด ๋ง์ ์ต์ ์ด ์๊น๋๋ค. ์ SCons๋ณด๋ค ์ค๊ฐ์ ๋๊น? ์๋๋ฉด bazel/buck๋ ๊ด์ฐฎ์ ๋๊ตฌ์ ๋๊น? ๊ทธ๋ฌ๋ ๋ด๊ฐ CMake์ ์ฐฌ์ฑํ๋ ๊ฐ์ฅ ํฐ ์ฃผ์ฅ์ ํด๋น ์ํ๊ณ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๊ตฌ์ถ๋ ๋๊ตฌ์ ๋๋ค. Clang ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฌ๋ฌ ์ด์ ์ฒด์ ์ ๋ํ ํจํค์ง ์ง์ ๋ฑ. ๋ด๊ฐ ๋ค์ ์ ์ผํ ์ ํจํ ๋จ์ ์ ์๋ชป๋ ๊ตฌ๋ฌธ๊ณผ ๋ฌธ์์ด์ง๋ง, ์ด๊ฒ์ผ๋ก ๋ด ์ ์ฅ์ ๋ฐ๊ฟ ๋งํผ ์ถฉ๋ถํ ๊ฐ๋ ฅํ์ง ์์ต๋๋ค.
์ SCons๋ณด๋ค ์ค๊ฐ์ ๋๊น?
Meson์ ์ฆ๋ถ ๊ฐ๋ฐ์ ํจ์ฌ ๋ ๋น ๋ฅธ ๋์ ํ์ผ์ ์์ฑํฉ๋๋ค. ๋ํ Windows์์๋ ์ด๋ค ์ข ๋ฅ์ Visual Studio ๊ฒฝ๋ก ์กฐ์๋ ์ํํ ํ์ ๊ฐ ์์ต๋๋ค. Meson์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํฉ๋๋ค. scons๋ณด๋ค meson์ ์ฌ์ฉํ๋ฉด ํนํ Visual Studio๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์ ๊ฒฝ์ฐ ๋์ ์ฐฝ์ ์ค๋ฒํค๋๋ฅผ ๋ง์ด ์ค์ผ ์ ์์ต๋๋ค.
์๋๋ฉด bazel/buck๋ ๊ด์ฐฎ์ ๋๊ตฌ์ ๋๊น?
bazel๊ณผ buck์ด ๋ชจ๋ Java๋ก ์์ฑ๋์๋ค๋ ์ ์ ๊ฐ์ํ๋ฉด(android๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒฝ์ฐ์๋ง ์ข
์์ฑ godot๊ฐ ์๊ณ ๊ธฐ์ ์ ์ผ๋ก NDK ๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ pip install meson
ํตํด meson(๋ฐ ninja)์ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
Clang ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค
Meson์ ninja์ ๋ด์ฅ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฅผ ์ง์ํฉ๋๋ค.
์ฌ๋ฌ ์ด์ ์ฒด์ ์ ํจํค์ง ์ง์
Meson๋ ์ด๋ฅผ ์ง์ํ๋ฉฐ ์ ์ ํ ๊ฒฝ์ฐ pkg-config์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
๋ด๊ฐ ๋ค์๋ ์ ์ผํ ์ ํจํ ๋จ์ ์ ์๋ชป๋ ๊ตฌ๋ฌธ๊ณผ ๋ฌธ์์ ๋๋ค.
Meson์ ๋ณ์, ๊ฐ์ฒด ๋ฐ ๋ด์ฅ ํจ์์ ์์กดํ๋ ๋งค์ฐ ํ์ด์ฌ๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ์๊ฐ์๋ ๊ธ์
my_meson_list = ['x', 'y', 'z']
message(my_meson_list)
๋
set(MY_CMAKE_LIST "x;y;z")
message(STATUS ${MY_CMAKE_LIST})
ํนํ cmake๊ฐ ๋๋๋ก ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ ๋ ํจ์ฌ ์ฝ์ต๋๋ค. ์์ฑ๊ธฐ ํํ์์ ์์ํ๋ฉด ๋งค์ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
# In one file
set(USE_STD_CXX11 "-std=c++11")
set(USE_STDLIB_LIBCXX "-stdlib=libc++")
# Possibly elsewhere
set(LIBCXX $<BOOL:${CAN_USE_STDLIB_LIBCXX}>,$<BOOL:${BUILD_WITH_LIBCXX}>)
set(NO_RTTI $<BOOL:${CAN_USE_NO_RTTI}>,$<BOOL:${DISABLE_RTTI}>)
# Later on...
target_compile_options(my-exe
PUBLIC
$<$<BOOL:${CAN_USE_STD_CXX11}>:${USE_STD_CXX11}>
$<$<AND:${LIBCXX}>:${USE_STDLIB_LIBCXX}>
$<$<AND:${NO_RTTI}>:${USE_NO_RTTI}>
# Oh yeah, you're gonna want more of these, because you can't trust compiler interfaces
)
# Generator expressions mean you can't follow the flow of the build to see what is called and defined where. This is a completely valid use of CMake.
check_cxx_compiler_flag(${USE_STDLIB_LIBCXX} CAN_USE_STDLIB_LIBCXX)
check_cxx_compiler_flag(${USE_NO_RTTI} CAN_USE_NO_RTTI)
๋ฑ๊ฐ ์ค๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
cxx = meson.get_compiler('cpp')
# This is an extremely simplified approach. One can do a different option when dealing with MSVC and gcc support.
args = compiler.get_supported_arguments('-std=c++11', '-stdlib=libc++')
add_project_arguments(args)
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋๋ ๋ชจ๋ C++ ๋น๋ ์์คํ ์ค์์ Meson์ด ๊ฐ์ฅ ๋์ฐ ํ๋ค๋ ์ ์ ์ฃผ๋ชฉํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ฉ์ ๋ฐ๋ํ๋ ์ฃผ์ฅ์ ์น ๋งํ์ ๊ทธ๋ฆผ์ธ ๊ฒฝํฅ์ด ์๊ณ , ์ด๋ค ์ฌ๋๋ค์ CMake๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ ๋ํด ์์ ํ๋๋ ๊ฒฝํฅ์ด ์์ผ๋ฏ๋ก, "์ด๋ด ์ ์ด๋ CMake๋ autotools๊ฐ ์๋๋๋ค"๋ผ๊ณ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฌด์๋ณด๋ค๋(ํนํ gdnative๋ก Godot๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์ด๊ฒ์ ์ ๋ง ์ค์ํ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค) Meson์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๋ฅผ ์ง์ํฉ๋๋ค. CMake๋ ๊ทธ๋ ์ง ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ cotire๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๋ฅผ ํดํนํ๋ฉด ๊ฐ์น๋ณด๋ค ๋ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค).
์ด๊ฒ์ด gdnative ์ฌ์ฉ์์ ๋น๋ ์๋๋ฅผ ์ผ๋ง๋ ๋์ผ ์ ์๋์ง ๋งํ ์๋ ์์ง๋ง gcc ๋ฐ msvc์์ ์๋นํ ํฅ์์ด ๋ ๊ฒ์
๋๋ค(์ต์ํ msvc์์ ์ฑ๋ฅ ํฅ์์ ๋ถ๊ฐํผํฉ๋๋ค). Godot์์ ๋ฐ๊ฒฌ๋๋ ์์ฃผ ์ ์ ์์ ํ
ํ๋ฆฟ ์ฝ๋์ ๋ํด extern template
์ฌ์ฉ์ ์ถ๊ฐํ๋ฉด ๋ฐ๋ณต ๋ฐ ์ฆ๋ถ ๋น๋์ ์ค์ํ ์๋นํ ๋น๋ ์๊ฐ ๊ฐ์ ์ ๋ณผ ์ ์์ต๋๋ค.
Meson์ ๋์ ํ์ผ์ ์์ฑํ๋ฏ๋ก ์ฆ๋ถ ๊ฐ๋ฐ์ ํจ์ฌ ๋ ๋น ๋ฆ ๋๋ค.
CMake๋ ๊ธฐ์กด Makefile ๋์ Ninja ๋น๋ ํ์ผ์ ์์ฑํ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ -G Ninja
๋ฅผ ๋ช
๋ น์ค์ ์ ๋ฌํ์ฌ ์ํ๋ฉ๋๋ค. ๋ด๊ฐ ์๋ํ ๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ๊ฝค ์ ์๋ํ๋ฉฐ ์ ์ฒด์ ์ผ๋ก ์ฝ๊ฐ ๋ ๋น ๋ฆ
๋๋ค(๊ฒ๋ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ CPU ์ค๋ ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค).
Meson์ ๋ด๊ฐ ๋ณธ ์์ ์ฑ๋ฅ ๋น๊ต์์ ์ฌ์ ํ ์ด๊ธฐ๊ณ ์์ง๋ง ์ด๊ฒ์ Meson๊ณผ CMake ์ฑ๋ฅ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ์ค์ด๋ ๋ฐ ํ์คํ ๋์์ด ๋ฉ๋๋ค.
์, ๊ทธ๋ฌ๋ CMake๋ ์๋์ผ๋ก ๋์๋ฅผ ์ค์นํ์ง ์์ผ๋ฉฐ ๊ธฐ๋ณธ ์์ฑ๊ธฐ๊ฐ ์๋๋๋ค. ๋ด ๊ฒฝํ์ CMake์ ๋๋ถ๋ถ์ ์๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ต์ ๋ฒ์ ์ CMake๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์์ง๋ง ๋ชจ๋ ์ฌ๋์ด ์ต์ CMake๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋๋ค.
์์ฃผ ์ฒ ์ ํฉ๋๋ค! ๋น๋ ์์คํ ์์ ์ค์ํ๊ฒ ์๊ฐํ๋ ๊ธฐ๋ฅ์ ๋ํ ์ข์ ์์ด๋์ด๊ฐ ์์ด์ ๊ธฐ์ฉ๋๋ค. ๋๋ ์ฌ์ ํ ํ๋ก์ ํธ๊ฐ ์์กดํ ์ ์๋ C++ ์ธ๊ณ์์ ํ์ค ๋น๋ ์์คํ ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ meson์ด ์์ฒด์ ์ธ ๊ฒ์ด ์๋๋ผ CMake ํธ๋์คํ์ผ๋ฌ์์ผ๋ฉด ํฉ๋๋ค.
๋๋ ์ฌ์ ํ ํ๋ก์ ํธ๊ฐ ์์กดํ ์ ์๋ C++ ์ธ๊ณ์์ ํ์ค ๋น๋ ์์คํ ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ฅผ ๋ฏฟ์ผ์ธ์. ์ ๋ณด๋ค ๋ ์ํ๋ ์ฌ๋์ ์์ต๋๋ค. ๋๋ ์ผ์ข ์ ๋น๋ ์์คํ ์ฐ๋ ๊ธฐ ๊ณ ๋ธ๋ฆฐ์ด ๋์๊ณ CppCon์์ ๊ทธ๋ค์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ๊น์ง ํ์ต๋๋ค. ๋๋ ๋ถํํ๋ (๋๋ ๋คํ์ค๋ฝ๊ฒ๋?) ๊ฑฐ์ ์ง์ฐฉ์ ์ง์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋น๋ ์์คํ ์ ๋ํด ๋ง์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. :)
์ด ๋ง์ ํ๊ณ ์ถ์ง๋ง Windows์์ Godot๋ฅผ ์ค๋ซ๋์ ๋น๋ํ ๋๋ง๋ค Python์ด ์ผ๊ด๋๊ฒ ๋ด CPU์ 15% ์ด์์ ์ฐจ์งํ๋ค๋ ์ฌ์ค์ ์ฃผ๋ชฉํ์ต๋๋ค. ์์์ด ๋๋ฆด ๋ฟ์ธ์ง ์์ฌ์ค๋ฝ์ต๋๋ค.
๋๊ฐ meson์ผ๋ก ๋ง๋ ์์ ํ๋กํ ํ์ Godot ์์ง์ ๋ง๋ค๊น์? ๋๋ bazel์ ๋ํ ์์ ํ ์คํธ๋ฅผ ๋ง๋๋ ์ง์ ์ ๋๋ฌํ์ง ๋ชปํ์ต๋๋ค.
Godot์ 2D ์ ์ฉ ๋น๋๋ ๋ชจ๋ ์ต์ ์ ๋นํ์ฑํํ ์ํ์์ ํ ์คํธํ๊ธฐ์ ์ถฉ๋ถํด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์ง๋ฉดํ ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ core/make_binders.py์์ต๋๋ค. ์ด๊ฒ์ Godot๊ฐ ์ฌ์ฉํ๋ ์๋ ์์ฑ ์ฝ๋์ ๋๋ค.
๋น๋ ์์คํ Bazel์์ ์ด๊ธฐ ํ๋กํ ํ์ ์ ๋ง๋ค์์ง๋ง ๋ค๋ฅธ ๋ฌธ์ ์์ ์ค์ ์ ๋ํด ๋ ผ์ํ๊ฒ ์ต๋๋ค. https://github.com/godotengine/godot/issues/18518
์ผ์ฃผ์ผ ๋์ ์๊ฐ์ด ์์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์ Bazel BUILD์์ ํ์ฅํ ์ ์์ต๋๋ค.
Lol bazel์ ์ด๋ป๊ฒ ์ฐธ์ฌํ๊ฒ ๋์๋์?
๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ์ ํํ ์ ์๋ ๊ธฐํ๊ฐ ํ ๋ฒ ์์ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฅํ ์ต์์ ์ต์ ์ ์ฐพ์์ผ ํ์ง ์์๊น์? ๋๋ Cake vs Bazel vs Scons ๋น๊ต ์ฐจํธ๋ฅผ ๋ณด๋ ๋ฐ ๊ด์ฌ์ด ์์ง๋ง, ๊ทธ ํ ์คํธ๋ฅผ ์ํ ํ์ํฌ๋ฅผ ์ํํ๊ธฐ ์ํด Cake์ ๋ํ ๊ฒฝํ์ด ์ ํ ์๋ค๋ ๊ฒ์ ์ธ์ ํด์ผ ํฉ๋๋ค.
@rraallvv ๋ ์ผ์ดํฌ ๋๋ CMake๋ฅผ ์๋ฏธํฉ๋๊น?
@isaachier ๋ด ๋์, ๋์ ๋ํด ์๊ธฐํ๋ค www.cakebuild.net , ๋๋ ๊ทธ๊ฒ์ ๋ํด ์ฃ์กํฉ๋๋ค,๋ณด๋ค ๊ตฌ์ฒด์ ์ธ๋์ด ์์ด์ผํฉ๋๋ค.
C# ์ ์ฉ ์๋๊ฐ์?
@isaachier ์ ๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. SCons๊ฐ Python์ผ๋ก ์์ฑ๋๊ณ C++๋ฅผ ์ง์ํ๋ ๊ฒ์ฒ๋ผ ์ผ์ดํฌ๊ฐ ๊ฐ๋ฅํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ๋๋ ๋ฐฉ๊ธ ๊ทธ๋ค์ gitter chat ์์ ๋ฌผ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ต๋ณ์ ๋ค์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
๊ธฐ๋ก์ ์ํด @rraallvv ์ฃผ์ ๋น๋ ์์คํ ์ ๋๋ํ ๋น๊ตํ๋ ์์ด๋์ด๋ ์ข์ ์์ด๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ค์์ ๋ด๊ฐ ์จ๋ผ์ธ์์ ์๋นํ ํธ๊ฒฌ์ด ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ ๋๋ค(๋น๋ ์์คํ ๊ฐ๋ฐ์๊ฐ ์์ฑํ์ง ์์): https://carlosvin.github.io/posts/choosing-modern-cpp-stack , https://www.reddit. com/r/cpp/comments/6euc7b/build_systems_bazel_buck/die6g1y/ , https://stackoverflow.com/a/12022652/1930331.
๋ด ๊ฐ์ธ์ ์ธ ์๊ฒฌ:
C++์ ๋ํ ์ฌ์ค์์ ํ์ค์ ์ํ๊ณ CMake๊ฐ ํ์ฌ ๊ฐ์ฅ ํฐ "์์ฅ ์ ์ ์จ"์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐํ๊ฐ ์์ ๋๋ง๋ค CMake๋ฅผ ์ถ์งํ๋ ค๊ณ ํฉ๋๋ค.
@isaachier ํด๋น ์ ๋ณด๋ฅผ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. C++์์ ์คํฌ๋ฆฝํ ์ ์ง์ํ๋ ๋น๋ ์์คํ ์ด ์๊ธฐ ๋๋ฌธ์ C#์ ์ถ์งํ๊ณ ์์ต๋๋ค. ์ด๋ฆฌ์๊ฒ ๋ค๋ฆด ์ ์์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ์์ง ๊ทธ๋ ๊ฒ ํ์ง ์์ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด C++ REPL ์ ๋ค์ ๋จ๊ณ๋ก ์ด๋ํ์ฌ ์ด๋ ๊ฒ์ด ๋ ๋ซ๊ณ ๋ ๋น ๋ฅธ์ง์ ๋ํ ๋ ผ์์ ๋๋ด๊ณ ์ถ๋ค๋ฉด ๋น๋ ์์คํ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ดํด๊ฐ ์ ๋ผ์. C++๋ ์๋ง๋ ๋์ฐํ ๋น๋ ์ธ์ด์ผ ๊ฒ์ ๋๋ค. ๋๋ฆผ์ ์ฌ์ฉ๋ ์คํฌ๋ฆฝํ ์ธ์ด์ ์ธ๋ถ ์ฌํญ์ด ์๋๋ผ ๋ด๋ถ ๋น๋ ์์คํ ์ฝ์ด AFAIK์ ๋ ๊ด๋ จ์ด ์์ต๋๋ค.
@isaachier ๋ด ์๊ฐ์ SCons๋ Python์ผ๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋๋ฆฌ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ์ ์ฒด ๋น๋ ์์คํ ์ C++๋ก ์ด์ํ๋ ์์ ์ ์ํํ๊ณ ํด๋น ๋น๋๋ฅผ ์คํํ๊ธฐ ์ํด C++ ์คํฌ๋ฆฝํธ๋ฅผ JIT ์ปดํ์ผํ๊ฒ ํ๋ฉด ํจ์ฌ ๋ ๋ง์ ๊ฒ์ ๋๋ค. ๋ ๋น ๋ฅด๊ฒ. ์๋ง๋ ๋ชจ๋ ๋น๋ ์์คํ ์ด ๋ง์ฐฌ๊ฐ์ง์ผ ๊ฒ์ ๋๋ค.
์ข์ ์๊ฐ์ด์ง๋ง meson์ ๋๋ถ๋ถ์ ๊ณ์ ์์ ๋๋ฆฐ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง ์์ง๋ง Python์ผ๋ก ์์ฑ๋์์ต๋๋ค.
GNOME ํ๋ก์ ํธ๊ฐ ํ์ฌ meson์ ์ํด autotools๋ฅผ ํฌ๊ธฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ meson์ด ์ด๋ฒ ์ฃผ์ ํ๋ฏธ๊ฐ ๋ ์ง ์์ฌ๋ฉ๋๋ค.
๋ํ Scons๋ ํ์ด์ฌ์ผ๋ก ์์ฑ๋์ด์๊ฐ ์๋๋ผ ๋น๋๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฝ๋๋ค. make ๋๋ ninja์ ๊ฐ์ ์ง์ ๋น๋ ์์คํ ์ด์ง๋ง ์ ์๋ฅผ ์ํด ๋ง๋ํ ์์ XML์ ์ฌ์ฉํ๊ณ ๋ง์ ์์ ์ฝ๋๊ฐ ์ค์ ๋ก XSLT ๋ณํ์ ๋ถ๊ณผํฉ๋๋ค.
๋ฐ๋ฉด Meson์ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ์์ฑํ ๋ค์ ์ด๋ฅผ ๋์ ํ์ผ์ ๋คํํฉ๋๋ค. ๋์๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฉ์์ด ๋น ๋ฆ ๋๋ค. ๋ํ CMake์ ๊ฐ์ด Meson์์ ๋ชจ๋ ๊ฒ์ด ๋ฌธ์์ด์ธ ๊ฒ์ ์๋๋๋ค.
๋ง์ง๋ง์ผ๋ก, C++๋ก ์คํฌ๋ฆฝํ ํ ์ ์๋ ๊ฐ๋ฐ ๋น๋ ์์คํ ์ด ๋ช ๊ฐ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. (์ ๋ ์ค์ ๋ก ๊ทธ ์ค ํ๋๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.) ๊ทธ๋ฌ๋ Godot์ ์์ง ์กด์ฌํ์ง ์๋ ๋น๋ ์์คํ ์ผ๋ก ์ด๋ํ๋๋ก ์์ฒญํฉ๋๋ค( ๊ทธ๋ฆฌ๊ณ ๋ ๋์ ๊ฒ์ ๋ ์์ ์ด ์ฐ๊ณ ์๋ค๋ ๊ฒ)์ด ๊ฒธ์ํ์ง ์์ ๋ด ์๊ฒฌ์ผ๋ก๋ ์ฝ๊ฐ ์ค๋งํฉ๋๋ค ;)
๋๋ ๋ํ ํ์ฌ ๊ฐ๋ฐ ์ํฌํ๋ก์์ ํ์ด์ฌ์ด ํ์๋ผ๋ ์ ์ ๋ํ์ดํ๊ณ ์ถ์ต๋๋ค. ๋ฉ์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํ์ด์ฌ์ pip
๋๊ตฌ๋ฅผ ํธ์ถํ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํ๊ฒ meson์ผ๋ก ์ด๋ํฉ๋๋ค.
๋๋ SCons๋ ๋๋ฆฌ๋ค๊ณ ์๊ฐํ์ง ์๋๋ค๋ @reduz์ ์์ ํ ๋์ํฉ๋๋ค.
@slurps-mad-rips๊ฐ ๋งํ๋ฏ์ด :
Scons๋ python์ผ๋ก ์์ฑ๋์ด์๊ฐ ์๋๋ผ ๋น๋๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฝ๋๋ค.
๋จ์ scons:
scons๋ ์์ฑ๋ ์ ์๋ ๋์ ์์ ์๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๋ -j ์ต์ ์ ํตํด ์ฌ๋ฌ ๋์์ ๋ณ๋ ฌ๋ก ๊ตฌ์ถํ๋ ๊ฒ์ ์ง์ํฉ๋๋ค.
scons -j 4
๋๋ 8c16t๊ฐ ์๋ CPU๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก "scons p=x11 -j 18"์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋งค์ฐ ๋น ๋ฆ
๋๋ค.
"scons p=x11"์ ๊ธฐ๋ณธ ์ค์ ์ธ "-j 1"๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค 10๋ฐฐ ๋น ๋ฆ
๋๋ค.
2018๋
์ ์ฑ๊ธ ์ฝ์ด CPU๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น?
CPU๊ฐ ์์ ํ ์๋ํ๋๋ก ํ์ญ์์ค.
์๋ํด ์ฃผ์ธ์.
๋ชจ๋ ์ฌ๋์ด ์ด๋ ๊ฒ ํฐ CPU๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์๋์ง๋ง ๋ ์ค์ํ ๊ฒ์ meson(๊ธ์, ๋์)์ด ์ฆ๋ถ ์ฌ์ปดํ์ผ์์ ํจ์ฌ ๋ ๋น ๋ฅด๋ค๋ ๊ฒ์ ๋๋ค. Scons๋ ๊ธฐ๋ณธ์ ์ผ๋ก MD5 ํด์ ํฉ๊ณ๋ฅผ ์ํํ์ฌ ํ์ผ์ด ๋ณ๊ฒฝ๋์๋์ง ํ์ธํฉ๋๋ค. Godot๋ MD5-ํ์์คํฌํ ์ค์ ์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ํ์์คํฌํ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์๋ง ํ์ผ์ ํด์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฌ์ ํ ์๊ธฐ๋ค.
๋ ๋์ ๊ฒ์ ์ฆ๋ช ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์๋ก์ด ๊ฒ์ ์์ฑํ๊ณ ๋ณด๋ ๊ฒ์ ๋๋ค :)
Scons๋ ๋ง์ ์ฌ๋๋ค, ํนํ -j 1 ์ด์์ ๋ฌธ์ ์ ์ง๋ฉดํ๋ Windows ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด์ง ์์ต๋๋ค.
@slurps-mad-rips ํ๋ก์ ํธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋์๋ ์๋๋ฅผ ๋๋ฌด ๊ณผ์ฅํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค: http://david.rothlis.net/ninja-benchmark/. ์์ค ํ์ผ์ ๊ณ์ฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค. <20K์ด๋ฉด ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
@isaachier ๊ทธ ๋ฒค์น๋งํฌ๋ ninja์ scons๊ฐ ์๋๋ผ make์ ninja ์ฌ์ด์ ์์ผ๋ฏ๋ก์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๊ณ ์ถ์ง ์๋ค๋ฉด ์ฉ์ํด์ผํฉ๋๋ค. ;)
๋ ๋์ ๊ฒ์ ์ฆ๋ช ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์๋ก ์์ฑํ๊ณ ๋ณด๋ ๊ฒ์ ๋๋ค :)
๋์ํฉ๋๋ค. ์์ ๊ฑฐ๋ฅผ ํ๋ฆฌ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ ๋์ ๋น๋ ์์คํ ์ ๋ํ ์๊ฒฌ์ด ์์ผ๋ฉด ์ด๋ฅผ ๊ตฌํํ๊ณ ๋ ๋ซ๋ค๋ ๊ฒ์ ์ฆ๋ช ํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ ์๊ฒฌ์ ๋ํ ํ ๋ก ์ด๋ฉฐ ์๋ฌด๋ฐ๋ ์ด๋์ง ๋ชปํ ๊ฒ์ ๋๋ค. @fire ๋ ์ด๋ฏธ https://github.com/godotengine/godot/issues/18518.
@slurps-mad-rips ya ์์ ํ ๋ค๋ฅธ ์ฃผ์ , SCons๊ฐ ์๋๋๋ค. ๋๋ ๋จ์ง make vs. ninja๊ฐ ๋ฏธ์น ์ฐจ์ด๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
์ฝ๊ฐ์ ์ ๋ฐ์ดํธ: meson์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ํฌ๊ธฐํฉ๋๋ค. ๋จํธ์ ์ด์๊ณ ๋น๋ ํ์ผ์ด ์ฝ๊ฐ ๋ ์ฝ๊ธฐ ์ฌ์ ์ง๋ง ํ์ฌ ์์คํ ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ scons๋ฅผ meson์ผ๋ก ์ฎ๊ธฐ๋ ๋์ ๋ด (์ง๊ธ์ ๋๋ฌผ๊ณ ๊ณต๊ธ์ด ๋ถ์กฑํ) ์์ ์๊ฐ์ ๋๋ถ๋ถ์ ๋ณด๋ด๋ ๊ณณ์ ๋๋ค.
ํ์ฌ ๋ง์ ์ฝ๋์ ์์ ์ด scons ์คํฌ๋ฆฝํธ์ ์ง์ ๋ฐฐ์น๋์ด ๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ์ด๋ํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ๋ด๊ฐ ์ฃผ์ฅํ๋ ๊ฒ์ด ์๋ค๋ฉด scons์์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ธฐ์กด python ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐ ์๊ฐ์ ์๋นํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด meson, cmake ๋๋ bazel๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ํจ์ฌ ์ฝ๊ฒ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ชจ๋ ์ฝ๋ ์์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด ํจ์น๊ฐ ๋ณํฉ๋ ๊ฒ์ด ์ข์ต๋๋ค. https://github.com/godotengine/godot/pull/17595 ํฌ๊ธฐํ์ง ๋ง์ธ์!
SCons ํ๋ก์ ํธ ๊ณต๋ ๊ด๋ฆฌ์๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ฐธ๊ณ ์ฌํญ:
1 - SCons๋ ํ๋ฐํ ๊ฐ๋ฐ ์ค์ด๋ฉฐ Github์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ดํ๋ก ๋์ด์ค๊ธฐ ์์ฒญ ๋น์จ์ด ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
2 - null ์ฆ๋ถ ๋น๋ ์๊ฐ์ ์ฝ 50%๋ฅผ ๋ด๋นํ๋ SCons์ ๋ช ๊ฐ์ง ํน์ ๋ถ๋ถ์ ํ์ธํ์ผ๋ฉฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๊ทน์ ์ผ๋ก ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. (Subst ๊ธฐ๋ฅ)
3 - SCons 3.0์์ Python 3.5+(2.7.x ํฌํจ)๋ฅผ ์ง์ํ๊ธฐ ์์ํ์ต๋๋ค.
4 - N๊ฐ์ ๋ค๋ฅธ ๋น๋ ์์คํ
์ผ๋ก ์ด์ํ๋ ค๊ณ ์๋ํ๋ ๋์ SCons๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ์ฝ๊ฐ์ ์๊ฐ์ ๊ธฐ์ฌํ๋ ๊ฒ์ด ๊ฐ๋ฐ์ ์๊ฐ์ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ์ ์ํ๊ฒ ์ต๋๋ค.
5 - ์ฐ๋ฆฌ๋ 3.0.0 ๋ฐ 3.0.1์์ ๋ฆด๋ฆฌ์ค๋ ์ฑ๋ฅ ๊ฐ์ ์ ์ผ๋ถ ๋ฎ์ ํ์ ๊ณผ์ผ์ ์๋ณํ๊ณ ํด๊ฒฐํ์ต๋๋ค. ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ null ์ฆ๋ถ ๋น๋๊ฐ 5-15% ๋๋ ค์ง ์ ์์ต๋๋ค. (ํ์ด์ฌ 2.7.x ๊ฐ์ )
ํญ์ ๊ทธ๋ ๋ฏ์ด SCons ํ๋ก์ ํธ๋ SCons๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ํ๋ก์ ํธ๋ฅผ ๋์ธ ์ค๋น๊ฐ ๋์ด ์๊ณ ๊ธฐ๊บผ์ด ๋์ธ ๊ฒ์ ๋๋ค.
SCons ๋ฐ Godot์ ๋ํ ์ผ๋ถ "ํต๊ณ".
๋๋ ์ค๋๋ ์ฐ๋ฆฌ๊ฐ "๋ชจ๋" ์ฌ์ฉํ๋ ํ๋ก์ธ์(i7s)๋ณด๋ค 2.4GHZ(๋ฐ ์ฌ์ดํด ์๋น ๋ ๋ฎ์ ๋ช ๋ น์ด)๋ฅผ ๊ฐ์ง 2008๋ ์ ๋์ 4์ฝ์ด CPU์ธ Q6600์ ์ฌ์ฉํ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์ฌ์ฉํ๊ณ ์์ต๋๋ค).
Q6600์์ ๋น๋๋ 3๋ถ์์ 5๋ถ(๋๋ ๊ทธ ์ด์์ด์ง๋ง ์ ํํ ์ซ์๋ ๊ทธ๋ค์ง ์ค์ํ์ง ์์)์ด ์์๋์์ผ๋ฉฐ, ๊ทธ ์ค SCons๊ฐ ์ข ์์ฑ ๋ฐ ํญ๋ชฉ ํธ๋ฆฌ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐ ~35-40์ด๊ฐ ์์๋์์ต๋๋ค(์ค๋น ์์ )... ๋ฐ๋ผ์ 80%์ ์๊ฐ์ด cl.exe(MSVC ์ปดํ์ผ๋ฌ) ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ณตํด์ ์คํํ๋ ๋ฐ ์์๋์์ต๋๋ค.
๋ฐ๋ผ์ ์ฑ๋ฅ ๋ฐ ์ต์ ํ ์ธก๋ฉด์์, SCons(SCon์ด ์๋ ์ค์ ๋ก ํ์ด์ฌ)์๋ ์์๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ ๋์ฐํ ํ๋ก์ธ์ค ํธ์ถ ์์คํ ์ด ์๊ฑฐ๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ๋ก์ธ์ค๋น ํ๋์ ํ์ผ์ ์ปดํ์ผํ์ง ์๊ณ (ํ์ฌ SCons์ ๊ฐ์ด) 1 ํ๋์ ํ์ผ๋น ํ๋ก์ธ์ค ์ค๋ฒํค๋๋ ์ค์ํฉ๋๋ค(์ ๋ cl.exe ์ปดํ์ผ ๋ด๋ถ ๋ฐ ์์ ์ค๋ฒํค๋์ ๋ํ ์ ๋ฌธ๊ฐ๊ฐ ์๋๋๋ค). ๋ ๋น ๋ฅธ ๋น๋ ์์คํ ์ด ์์ฑํ ์ ์๋ ์ ์ผํ ์ฑ๋ฅ ์ต์ ํ๋ ์๋ง๋ ์ข ์์ฑ ํธ๋ฆฌ ๋จ๊ณ ๊ตฌ์ถ ๋ฐ ๋ณต์ก์ฑ์ ์ํ ๊ธฐํ ์ค๋น ์์ ์ผ ๊ฒ์ ๋๋ค. .
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ 5๋ถ ๋น๋ ์ค 35-40์ด๋ฅผ ์ต์ ํํ๊ณ ์์ต๋๋ค(i7์์๋ ํ์ฌ 3๋ถ ๋ฉํฐ ์ฝ์ด ๋น๋์์ 20์ด ๋จ์ผ ์ฝ์ด ์ค์ ๋จ๊ณ๋ฅผ ์ต์ ํํ๊ณ ์์ต๋๋ค).
์์ฝํ์๋ฉด, ์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด 3~5๋ถ์ด๋ฉด ์ค์ ๋ก 4์ฝ์ด ๋ฉํฐ์ฝ์ด ๋น๋์ด๊ณ ๋จ์ผ ์ฝ์ด ๋น๋์๋ ์ฝ 10๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ํ ์คํธ๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค...
๋ฐ๋ผ์ SCons๋ฅผ "์ต์ ํ"ํ๋ค๋ ๊ฒ์ ๋น๋ ์์์ ์ฒ์ 35์ด๋ฅผ ๋ค์ ์ต์ ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค...
๊ทธ๊ฒ์ SCons ๋ ๋ค๋ฅธ ๋ ๋น ๋ฅธ ๋น๋ ์์คํ ๊ณผ ๊ด๋ จํ์ฌ "์ต์ ํ"์ ๊ดํ ๊ฒ์ ๋๋ค... ๋ชจ๋ obj ํ์ผ์ ๋ํด ๋จ์ผ cl.exe๋ฅผ ํธ์ถํ๋ ๊ฒ์ ํผํ์ฌ ์ค์ ์ปดํ์ผ์ ์ฝ๊ฐ ์ต์ ํํ ์ ์์ง๋ง ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค. ํ๋ก์ธ์ค ์ค๋ฒํค๋๊ฐ ์๋นํฉ๋๋ค(HDD๊ฐ ํญ์ ์ค์ IO ๋ณ๋ชฉ ํ์์ด ๋๋ ๊ฒ์ด ๋๋ ต์ต๋๋ค(CPU๊ฐ ์๋). ์ด๋ SSD ์์ด๋ ํผํ ์/์ํํ ์ ์์)
์์ ๋ชจ๋ ๋จ๋ฝ์ "์ ์ฒด ๋น๋"๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์ฆ, SCons๋ ๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ ๋น๋๋๊ณ ์๊ฒฉํ ์ผ๊ด์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ฉด "์นํธ"ํ๋ฏ๋ก ๋จ์ผ ํ์ผ์ ๋ณ๊ฒฝํ๋ฉด ์ค์ ๋ก "๋จ์ผ ํ์ผ"์ ์ปดํ์ผํ ๋ค์ ๋ชจ๋ ๊ฒ์ ๋ค์ ๋งํฌํ์ฌ "์ ์ฒด ๋น๋"๋ฅผ ๋ค์ ์ฆ๋ถ ๋น๋). ๊ทธ๋ฌ๋ ์ด๊ฒ์ 35-40์ด์ ์์ ํ ์ข ์์ฑ ํธ๋ฆฌ ์ฌ์ ๊ณ์ฐ์ด ํ์ํฉ๋๋ค...
๋ฐ๋ผ์ "์ฆ๋ถ ๋น๋"๋ ๋ด ๊ธฐ์กด ์ปดํจํฐ์์ ์ฝ 45์ด์ด๋ฉฐ 2๋ ์ ๋ฉ์ฒญํ ๋์ด์์ ๋ CPU ๋ฐ์ด๋์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ค์ ๋ก๋ IO ๋ฐ์ด๋์ผ ์ ์์ต๋๋ค(HDD์์ ์์ฒ ๊ฐ์ ํ์ผ ํ์ธ ) ์ ์ฒด ์ข ์์ฑ ์ค์/ํธ๋ฆฌ ์ฌ๊ตฌ์ถ์ ๊ฒฝ์ฐ... ๋ฐ๋ผ์ IO ๋ฐ์ธ๋ฉ๋ ๊ฒฝ์ฐ "๋ ๋น ๋ฅธ buidlsystem"์ด ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค...
2๋ ์ ์ ๋ด ํดํน ์์ด๋์ด๋ ํ์ผ ์์คํ "๊ฐ์์"๋ฅผ SCons์ ์ฐ๊ฒฐํ๊ณ SCons๊ฐ ๋จ์ผ ๋ณ๊ฒฝ๋ ํ์ผ์ ์คํ ๋ฐ ์ฌ์ปดํ์ผํ๋๋ก ํ ๋ค์(์๋์ผ๋ก ์ข ์์ฑ์ด๋ฏ๋ก) ๋ชจ๋ ๊ฒ์ ๋ค์ ๋งํฌํ๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค... ๋น๋ก ์ฐ๊ฒฐ์ด ์ฌ์ ํ ์ ์ฒด ์ข ์์ฑ ์ค์์ ์คํํ ์ ์๋ค๋ ๊ฒ์ ์ค๋ ๊นจ๋ฌ์์ง๋ง... ์ฆ, ์ข ์์ฑ ํธ๋ฆฌ ์ค์/์ฌ๊ตฌ์ถ์ ์ต์ ์ผ๋ก ์ข ๋ฃ๋ ์ ์์ผ๋ฉฐ SCons๋ ์บ์๋ dep ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค... ์ฝ 15-20๊ฐ๋ฅผ ์ ์ฝํฉ๋๋ค. 35์ด ์ฌ์ ๊ณ์ฐ ๋จ๊ณ์ ์ด(์ฒ์ 15์ด๋ ํผํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์) ๋น๋ก ๊ทธ๊ฒ์ด SCons์ฒ๋ผ ํญ์ "์๋ฒฝํ" ๋น๋๋ฅผ ๋ณด์ฅํ์ง ์์ ์ ์์ง๋ง(๊ฐ๋ฐ์ ์ฆ๋ถ ๋น๋์๋ ์ค์ํ์ง ์์ ์ ์์ง๋ง... ์๋๊ฐ ๊ฐ์น์๋ ์ ์ถฉ์).
์ด์ npm ๋ฐ npm watch... ๋๋ ํ์ฌ ์ต์ํ์ง ์์ ๋ค๋ฅธ ์์คํ ์ ํตํด ํดํนํ ์ ์๋ค๋ ์ถฉ๋ถํ ์ง์์ ์ป์์ต๋๋ค. ํ์ง๋ง ๊ทธ๊ฑด ๋์ค์, ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์์ ๋(ํ์ฌ๋ ์๋)์ ๋๋ค.
์ด๊ฒ์ ์ข ๊ธธ์ด์ง๋ฏ๋ก ์ฌ๊ธฐ์ ๋๋ด๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ด ๋จ๋ฝ์ ์์ ์ ์ ๊ฐ ์ข์ํ๋ ๊ฒ์ฒ๋ผ ๋๊ตฐ๊ฐ๋ฅผ ๋๋ด์ํค๊ธฐ๋ณด๋ค๋ (๋น๋ ์์คํ ์์ ์์ ํ๋ ๊ฒ์ ์ข์ํ๋ค๋ฉด ๊ณ์ํ์ญ์์ค) "ํต๊ณ์ " ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. Godot์ SCons์์ ๋ช ๊ฐ์ง๋ฅผ ์์ ํ์ต๋๋ค. ์ฌ๊ธฐ ๊ณ์ ๋ถ๋ค๊ป ์ ์ฉํ ์ ๋ณด๊ฐ ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ด ํต๊ณ๋ฅผ ๋ณต์ /์ฌ์คํํ๋ ค๋ฉด ํต๊ณ ์ ๋ณด(ํ์ด๋จธ ํญ๋ชฉ)๋ฅผ ์ผ๊ณ ์ข ์์ฑ ์ฌํ์ฐ์ ๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ๋๊น์ง SCons ๋ฌธ์๋ฅผ ํ์ํ์ญ์์ค("์ฌ์ ๊ณ์ฐ"์ ์ฒ์ 20~30~35์ด). )...
๋๋ ์ฝ๊ฐ ๋ ์๋์ ์ธ ์๋ฃจ์ ์ ๊ฒฝ์ฐ, ๋ค์์ผ๋ก ์์ฑ๋ ์๋ํ๋ VS ํ๋ก์ ํธ์ ํ์ด๋จธ ๋๋ฒ๊น ์ ๋ณด๊ฐ ์ด๋ฏธ ์์ด์ผ ํฉ๋๋ค(ํธ์ง: ํ๋ฅ ์ด ์๋๋๋ค. ๋๊ตฐ๊ฐ vs ํ๋ก์ ํธ ์์ฑ์ ๋ํ ๋ฌ์ฝคํ ์ ๋ฐ์ดํธ์ฒ๋ผ ๋ณด์ด๋ ์์ ์ ์ํํ์ต๋๋ค. ์ด ๋จ๋ฝ์ ์ค๋๋ ์ ๋ณด์ผ ์ ์์). SCons(SConstruct ํ์ผ ๋)... godot ์น์ฌ์ดํธ์ "Windows ์ปดํ์ผ ํํ ๋ฆฌ์ผ"์์ VS ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ VS์์ SCons๋ฅผ ์คํํ ์ ์์ต๋๋ค. Godot 3์์ ํ ์คํธํ์ง๋ ์์์ง๋ง ์์ฑ๋ ํ๋ก์ ํธ๊ฐ ์ฌ์ ํ ์๋ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค... ์ต์ ์ด์ง๋ง > log.txt์ scons๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ ๋ ๋ค๋ฅธ ์ต์ ์ ๋๋ค(๋ฑ) ...
๋๊ตฐ๊ฐ ์ด ์ ๋ณด๊ฐ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@Griefchief ์กฐ๊ธ ์ ๋ฆฌ
์ค์ ๋ก "null ์ฆ๋ถ ๋น๋"(์ค์ ๋ก ๋ค์ ๋น๋ํ ํ์๋ ์์ง๋ง scons๋ ์ ์ฒด ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ด๋ฅผ ๋ณด์ฅํด์ผ ํจ)๊ฐ ์ฐ๋ฆฌ๊ฐ ์์ ์ค์ธ ๊ฒฝ์ฐ์ ๋๋ค.
์ผ๋ถ ํ๋กํ์ผ๋ง์์๋ ๋ช ๋ น์ค(๋ชจ๋ ๋์์ด ๋ณ๊ฒฝ๋์ง ์์๋์ง ํ์ธํ๊ธฐ ์ํด ์ํํด์ผ ํจ) ์ฒ๋ฆฌ์ ์ผ๋ถ ๋นํจ์จ์ฑ์ ์ง์ ํ์ต๋๋ค. ๊ทธ ๋๋ถ๋ถ์ Subst() ๋ ผ๋ฆฌ์ ๋๋ค. ์ด๊ฒ์ ์ฝ๊ฐ์ ๊น๋ค๋ก์ด ์ฝ๋์ด๋ฉฐ ์ง๊ธ๊น์ง ๋ ๊ฐ๋จํ๊ณ ์์ ํ์ง๋ง ๋์ฐํ์ง ์์ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์์ต๋๋ค.
๋ ๋ค๋ฅธ ํซ์คํ์ ํ์ฌ cpickle๋ก ๊ตฌํ๋๊ณ ํญ์ ์ ์ฒด์ ์ผ๋ก ์ฝ๊ณ ์ฐ๋ sconsign ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ๋๋ค. ์๋๋ฅผ ๋์ด๊ฑฐ๋ ๋ ์ฆ๋ถํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์์ด๋์ด๊ฐ ์์ต๋๋ค. ์ด์จ๋ ๊ฐ์ ์ ์ํด ํฅํ ๋ฆด๋ฆฌ์ค๋ฅผ ์์ฒญํ์ญ์์ค.
์ฐธ๊ณ ๋ก MSVC_BATCH๋ฅผ ์๋ํ์ฌ Windows ๋น๋ ์๋๊ฐ ๋นจ๋ผ์ง๋์ง ํ์ธํ ์ ์์ต๋๋ค.
MSVC_BATCH
true ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด SCons๊ฐ Microsoft Visual C/C++ ์ปดํ์ผ๋ฌ๋ฅผ ํธ์ถํ ๋ ๊ฐ์ฒด ํ์ผ์ ์ปดํ์ผ์ ์ผ๊ด ์ฒ๋ฆฌํด์ผ ํจ์ ์ง์ ํฉ๋๋ค. ๋์ผํ ์ถ๋ ฅ ๋๋ ํ ๋ฆฌ์ ๋์ ํ์ผ์ ์์ฑํ๊ณ ๋์ผํ ๊ตฌ์ฑ ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ SCons์์ ๊ตฌ์ฑ๋ ๋์ผํ ์์ค ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ์์ค ํ์ผ ์ปดํ์ผ์ ์ปดํ์ผ๋ฌ์ ๋ํ ๋จ์ผ ํธ์ถ๋ก ๋น๋๋ฉ๋๋ค. ๊ฐ์ฒด ํ์ผ์ด ๋น๋๋ ์ดํ ๋ณ๊ฒฝ๋ ์์ค ํ์ผ๋ง ๊ฐ ์ปดํ์ผ๋ฌ ํธ์ถ์ ์ ๋ฌ๋ฉ๋๋ค($CHANGED_SOURCES ์์ฑ ๋ณ์๋ฅผ ํตํด). ๊ฐ์ฒด(๋์) ํ์ผ ๊ธฐ๋ณธ ์ด๋ฆ(.obj ์ ์ธ)์ด ์์ค ํ์ผ ๊ธฐ๋ณธ ์ด๋ฆ๊ณผ ์ผ์นํ์ง ์๋ ๋ชจ๋ ์ปดํ์ผ์ ๋ณ๋๋ก ์ปดํ์ผ๋ฉ๋๋ค.
@bojidar-bg ์, ์, ์ค์ ๋ก ์ฆ๋ถ ๋น๋์ ๋ํด์๋ ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๋ค. ํ ๊ฐ์ฌํฉ๋๋ค :D
@bdbaddog ์๋ ํ์ธ์ baddog, ๊ทํ์ ์ ๋ณด๋ฅผ ์ํด ์ค์ ๋ก ๊ทํ์ ์๊ฒฌ์ ๋ณด๊ธฐ ์ ์ ์ด ํฐ ์ฝ๋ฉํธ๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋์ ์ค์ ๋ก ๊ทํ์ ์ฝ๋ฉํธ์ ์๋ ์ด๋ค ๊ฒ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธํ์ง ์์ต๋๋ค... ๊ทธ๋ฌ๋ ๊ทํ๋ " ์ฐ๋ ค" ์ฐ๋ฆฌ๊ฐ ๋์์ ์๊ฒฌ์ ์์ฑํ๋ ๋์ ๋๋ (์ฌ์ค์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํ ์ ๋ณด๋ฅผ) ๊ฐ์ง๊ณ ์์์ต๋๋ค...
๊ทธ๋ฆฌ๊ณ ๋๋ ๋น์ ์ ์๊ฐ์ "๋ญ๋น"ํ๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ ๋น์ ์๊ฒ ํ์ ์น๊ณ ์ถ์ง ์์์ต๋๋ค. ๊ทธ๋ฅ ๋งค์ฐ ๋ฐ์๋ค))
์ฌ๊ธฐ์ ์ ๋ ฅํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@bdbaddog BD, ์ง์์ ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ง๋ฌธํ ์ ์์ต๋๋ค.
npm watch๋ฅผ ํ์ผ ์์คํ (godot์ ์์ค)์ ์ฐ๊ฒฐํ๊ณ ์ ํํ ์ด๋ค ํ์ผ์ด ๋ณ๊ฒฝ๋์๋์ง ์๋ฉด SCons์ ์ด๋ค ์ด์ ์ด ์์ต๋๊น?
์ด์ npm watch๋ฅผ ํตํด scons๋ฅผ ์คํํ๊ณ ํ์ผ์ ํธ์ํ ์ ์์ต๋๋ค...
scons [godot ์ต์ ] /file/that/was/changed.
์ด๊ฒ์ ๋ถ๋ช ํ Godot์ ์ ์ฒด dep ํธ๋ฆฌ๋ฅผ ํผํ๋ฉด์ ๊ทธ ํ์ผ์ ์ฌ์ปดํ์ผํ ๊ฒ์ ๋๋ค. ์ณ์? ์ด์ dep tree traversal์ 20์ด๊ฐ ๊ฑธ๋ฆฌ์ง ์์ง๋ง 1๊ฐ ๋ฏธ๋ง์ ํ๋ฅ ๋ก ๋ฐ์ํ์ง๋ง 1๊ฐ์ ์ ๋ฐ์ดํธ๋ .obj ํ์ผ(๋๋ ๊ทธ ์ด์, ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ)์ ์ป์ต๋๋ค. ์ค์ ๋ก ํ๋์ ํ์ผ์ ๋ํด ์ ์ฒด godot dep ํธ๋ฆฌ๋ฅผ ๊ฑฐ์น์ง ์์ต๋๊น? ๋๋ ์ด ์์ ์์ ๋ ์ ์ dep tree traversal์ ์ด์ ์ด ์์ต๋๊น?
์ด์ ๋ด๊ฐ ์ด์ ์ด ์๊ณ ๋ชจ๋ ๊ฒ์ ๋ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด "๋จ์ํ" ์ฐ๊ฒฐ ๋จ๊ณ๋ฅผ ์ํด ์ ์ฒด ํธ๋ฆฌ ํ์์ด ํ์ํฉ๋๊น?
๋๋ ์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ํ์ฌ Scons์์ ์ง์๋์ง ์์ ์๋ ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง(๋ชจ๋ ๊ฒ์ ๋ค์ ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ๋จ), ์ค์ฉ์ ์ด๊ณ ์ด๋ก ์ ์ธ ๊ด์ ์์ ๋ชจ๋ ๋ฌป๊ณ ์์ต๋๊น? ์บ์๋ dep ํธ๋ฆฌ๊ฐ "dep tree๋ฅผ ์ฌ์ฉํ์ง ์์" ์ต์ ๊ณผ ํจ๊ป ์ฌ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค(์์ด๋ฒ๋ ธ์ต๋๋ค. 2๋ ์ด ์ง๋ฌ์ต๋๋ค). ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์์๋ ์๋ํ๋ฉฐ ํด๋น ์ฌ์ฉ ์ฌ๋ก๋ ์ ํ์ผ์ด ์ถ๊ฐ๋์ง ์์์ต๋๋ค. ? (npm watch๋ ์ ํ์ผ ์ถ๊ฐ์ ๋ํด ๊ฒฝ๊ณ ํ ์ ์๊ณ ๋ด๊ฐ ๊ฐ์งํ๋ฉด ์ ์ฒด ๊น์ด ํธ๋ฆฌ ์๋ก ๊ณ ์นจ์ ์ํํ ์ ์์ต๋๋ค. ๋ค์ ๋งํด "๊น์ด ํธ๋ฆฌ ์ผ๊ด์ฑ ๋ณด์ฅ"์ npm watch์ ๊ฐ์ ํ์ผ ๊ฐ์๊ธฐ๋ก ๋ค์ ํธ์ํ๊ณ ์๋ํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ npm watch์ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์๋์ผ๋ก ์ํํ "์ข ์์ฑ ์บ์ ์ฌ์ฉ" ์ต์ ์ ์ ๋ ฅํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉ์๊ฐ ์๋ ์ผ๊ด์ฑ์ ๋ํด ๊ฑฑ์ ํ๊ฒ ํ๊ณ ์ฌ์ฉ์๊ฐ ํ์ผ์ ์ ์ฅํ ์๊ฐ "์ค์๊ฐ"์ผ๋ก ์ํํฉ๋๋ค. ํ์ผ, scons๊ฐ ์์ ์ ์ํํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ ์ ๊ณตํจ)
๋ด ์๊ฐ์ ์ต์ ํ(์ค์ ์ ์ผ๋ก๋ ์ด๋ก ์ ์ผ๋ก)๋ก ์๋ํ์ง ์๋ ๊ฒ์ด ์์ต๋๊น? ๋ค๋ฅธ ์ ์์ด ์์ต๋๊น(npm watch์ ๊ฐ์ ๊ฒ์ด ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ ์๋ฒฝํ ๋น๋๋ฅผ ๋ณด์ฅํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ๋ ๊ด์ฐฎ์ต๋๋ค. )? ์กฐ์ธ ๋ถํ๋๋ ค๋ ๋ ๊น์? ๊ฐ์ฌํฉ๋๋ค!
์์ฝํ์๋ฉด ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
1) Godot์ ์์ค ๋๋ ํ ๋ฆฌ์์ npm watch์ ๊ฐ์ filewatcher๋ฅผ ์คํํ์ญ์์ค.
2) ์ฌ์ฉ์๊ฐ ์ค๋๋ ํ์ผ์ ์ ์ฅ/์์
3) scons๋ npm์ ์ํด ํด๋น ํ์ผ์ ๋ํด ์ฆ์ ์คํ๋ฉ๋๋ค.
4) ์ปดํ์ผ์ด ์ฑ๊ณตํ๋ฉด npm์ scons์๊ฒ ๋ง์ปค๋ฅผ ์คํํ๊ณ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๋๋ก ์ง์ํฉ๋๋ค.
4.1) dep ํธ๋ฆฌ๊ฐ ์บ์๋ ๊ฒฝ์ฐ(์ ์ฒด ๋น๋๊ฐ ์ด๋ฏธ ์คํ๋ ๊ฒฝ์ฐ) npm์ ๋ง์ปค์ ์ด ์์ ์์ ์บ์๋ ๋ฒ์ ์ dep ํธ๋ฆฌ์ ์ฐ๊ฒฐํ๋๋ก ์ง์ํ ์ ์์ต๋๋ค.
4.1) ์บ์๋ dep ํธ๋ฆฌ๊ฐ ๊ฐ์ง๋์ง ์์ผ๋ฉด npm watch๋ ์ ์ฒด Godot ๋น๋๋ฅผ ์คํํฉ๋๋ค.
4.2) ์ ํ์ผ ์ถ๊ฐ์ ๊ฐ์ด ์บ์ ๋ฌดํจํ๊ฐ ๊ฐ์ง๋๋ฉด ์ ์ฒด dep ํธ๋ฆฌ ํ์์ ์ํํฉ๋๋ค(npm์ scons์ ํจ๊ป "์บ์๋ โโdep ํธ๋ฆฌ ์ฌ์ฉ" ์ต์
์ ์ฌ์ฉํ์ง ์์ต๋๋ค).
์ด๊ฒ์ด ์ ์์ด๋์ด๋ฅผ ์กฐ๊ธ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด ์์ ์์ ๋ฌด์์ด ๋ฌธ์ ์ธ์ง ์๋ ค์ฃผ์ธ์ ;D
์ถ์ : ์ด๊ฒ์ด "๋ช ๋ฐฑํ" ๊ฒฐ๊ณผ์ ํจ๊ป 35๊ฐ์ null ์ฆ๋ถ ๋น๋์์ 15์ด๋ฅผ ์ค์ธ ๋ช ๋ น์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค... ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ธฐ์ ์ค๋ช ๋ ๋ด์ฉ์ ์๋ํํ๊ณ ์ถ์ต๋๋ค(๋ค์ ์ ๊ฑฐ๋, + scons์๊ฒ ์ ํํ ํ์ผ์ ์๋ ค์ฃผ์ญ์์ค. ์ด๋ค ์์ผ๋ก๋ ๋์์ด ๋๊ฑฐ๋ ๋์์ด ๋ ์ ์๋ ๊ฒฝ์ฐ ์์ ๋จ):
https://www.scons.org/doc/latest/HTML/scons-user/ch06s04.html
๊ทธ๋์ ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค(ํน๋ณํ ์์๋ ์์ง๋ง yolo ๋๋ฌธ์ ์ซ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
1) ์ฆ๋ถ null ๋น๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ํ์ผ์ ์์ฑํ๋ ๋๊ตฌ์์ ์๋ฌด ๊ฒ๋ ์๋๋๋ค. Chrome์๋ AFAIK๊ฐ 2์ด ๋ฏธ๋ง์ null ์ฆ๋ถ ๋น๋๊ฐ ์์ต๋๋ค. npm watch
์๋์์ 15์ด๋ก 35์ด๊ฐ ๋จ์ด์ง๋ ๊ฒ์ meson ๋๋ cmake ๊ธฐ๋ฐ Ninja ๋น๋์ ๋นํด ์ฌ์ ํ ๋งค์ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ค์ํฉ๋๋ค. Ninja๋ ๋ช
๋ น์ค์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ ๋ค์ ๋น๋๋ฅผ ์ํํ๋ค๋ ์ ์์ Scons์ ๋์ผํ ์์
์ ์ํํฉ๋๋ค(make๋ ๋ฌผ๋ก ์ํํ์ง ์์).
2) CMake๋ ์ต๊ทผ CONFIGURE_DEPENDS
๋ฅผ glob ์์คํ
์ ๋ํ ์ธ์๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. xcodebuild ๋ฐ msbuild์ ๊ฐ์ ๋๊ตฌ๋ ์ญ์ฌ์ ์ผ๋ก(๊ทธ๋ฆฌ๊ณ ํ์ฌ) ๋๋ ํฐ๋ฆฌ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ์ง์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ํญ์ ๋ฐ๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ Scons๊ฐ ๊ฐ์ ํ ์ ์๋ ํ ๊ฐ์ง์
๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ ๊ตฌํํ๊ธฐ ์ํด ํ๋ก์ ํธ์ ๊น์ด ๋ค์ด๊ฐ ์๊ฐ๋ ์ธ๋ด์ฌ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ OS๋ ์ถ๊ฐ๋ ํ์ผ, ์์ ๋ ํ์ผ, ์ ๊ฑฐ๋ ํ์ผ ๋ฑ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ์ฆ๋ถ ๋ณ๊ฒฝ์ ์ํํ ๋ ๋ณ๊ฒฝ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ๋จํ ํ์ธํ๊ณ ์ฌ๊ตฌ์ฑ ๊ฒ์ฌ์์ ๋ณ๊ฒฝ๋ ๋๋ ํ ๋ฆฌ๋ง ๋ณผ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ ์ฒด ํธ๋ฆฌ๊ฐ ์๋๋ผ ๋ ์์ ๋นํธ๋ฅผ globbingํ๋ฏ๋ก ์ํ๋๋ ์์
์ ์ค์ผ ์ ์์ต๋๋ค. ์๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๊ด์ฐฎ์ต๋๋ค. ์ด๊ฒ์ด Godot์ ๋์์ด ๋๋์ง ์ฌ๋ถ๋ ์ฝ๊ฐ์ ํ
์คํธ๊ฐ ํ์ํ๋ฉฐ ๋์์ด ๋๋์ง ํ์ธํ๋ ๋ฐ ๋ง์ ์์
์ด ํ์ํฉ๋๋ค.
3) Scons๊ฐ ๋ ๋ง์ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ ๊ฒ์ ์ข์ ์ผ์ด์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก๋ Godot๊ฐ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๋น๋ ์์คํ ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ปค๋ฎค๋ํฐ ์ ์ฒด์ ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ Scons๋ฅผ ์ฌ์ฉํ๋ ์ด๋ค ๋๊ท๋ชจ ํ๋ก์ ํธ๋ Godot ๋ฐ์์ ์๊ฐํ ์ ์์ต๋๋ค. GNOME/GTK๋ ์ต๊ทผ meson์ผ๋ก ์ด๋ํ์ผ๋ฉฐ(CMake ๊ฑด๋๋ฐ๊ธฐ) KDE๋ ๊ฝค ์ค๋ซ๋์ CMake์ ์์์ต๋๋ค. ์ผํ์ ์ธ ์ฆ๊ฑฐ(๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ธ ํ์ฆ ํธํฅ)์ด์ง๋ง ๋๋ Godot๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง ๋ค์๋ scons๋ฅผ ๋ง์ง ํ์๊ฐ ์๋ C++ ๊ฐ๋ฐ์๋ฅผ ๋ช ๋ช ์๊ณ ์์ต๋๋ค. ๋ถ์พํ ๊ฒฝํ์ ์ ๊ฑฐํ์ฌ ๊ฐ๋ฐ์์ ์ ์ ๋จ์ ์ ๋ง์ ์ ๊ฑฐํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ์์งํ Scons๊ฐ ์ต๊ณ ์ ํ๋ก์ ํธ๊ฐ ๋๊ธธ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ C++ ์ปค๋ฎค๋ํฐ๋ ์ด๋ฏธ ๊ธด ์ปดํ์ผ ์๊ฐ์ ์ซ์ดํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ธด ์ฆ๋ถ null ๋น๋(๋๋ 1๊ฐ ํ์ผ์ ๊ธด ์ฆ๋ถ ๋น๋)๋ ํ๋ ์ธ๊ณ์์ ์ ๋ชฝ์ ๋๋ค.
๋ค์ ์๋ํ ์์ ์ด์ง๋ง ์ด๋ฅผ ์ํด CMake๋ฅผ ๋์์ผ๋ก ํ ์ ์์ต๋๋ค. CMake์์ meson์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ๋ง์ ์์
์ ์ํํ ์ ์๋ ๋ณํ ์คํฌ๋ฆฝํธ๊ฐ ์๋ meson ๋๋ถ์ ํจ์ฌ ์ฝ์ต๋๋ค. CMake๋ ์๋ก์ด FetchContent ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ข
์์ฑ์ ์ข ๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณผ ๊ฒ์
๋๋ค. ๋๋ ์ด codegen ์คํฌ๋ฆฝํธ๊ฐ ๋ณ๋์ ํ์ผ๋ก ์ฎ๊ฒจ์ ธ์ ๊ธฐ์ฉ๋๋ค. ๋ค๋ฅธ C++ ํ์ค์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด target_compile_features(<target> (PUBLIC|PRIVATE|INTERFACE) cxx_std_<number>)
๋งํผ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ CMake๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ถ๋ช ํ ๋ชจ๋ ๋น๋ ์์คํ ๊ด๋ จ ํญ๋ชฉ์ ๋ ผ์์ ์ฌ์ง๊ฐ ์์ง๋ง ์๋๋ ํด๋ฅผ ๋ผ์น ์ ์์ต๋๋ค.
์์งํ ๋งํด์ (๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋๋ดํ๊ฒ ๋ค๋ฆด ์๋ ์์ต๋๋ค) ์ ๋ Scons ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๊น์ด ํ๊ณ ๋ค๊ณ ์ถ์ง ์์ต๋๋ค. ์๋ง๋ Python 2.7์ด ๊ณต์์ ์ผ๋ก ๋ง์นจ๋ด ์์ ํ ์ข ๋ฃ๋๊ณ ํ๋ก์ ํธ๊ฐ Python 3.5 ์ด์์ผ๋ก ๋์๊ฐ ์ ์๋ 2020๋ ์ดํ์๋ ๋น๋๊ธฐ ์์ ์ ํตํด ์กฐ์ฌํ๊ฑฐ๋ ๊ฐ์ ํ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๊ทธ ์ ๊น์ง๋ ๋ง์ง์ง ์๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
์๋ง๋ Python 2.7์ด ๊ณต์์ ์ผ๋ก ๋ง์นจ๋ด ์ฃฝ๊ณ ํ๋ก์ ํธ๊ฐ Python 3.5 ์ด์์ผ๋ก ๋์๊ฐ ์ ์๋ 2020๋ ์ดํ์ ์กฐ์ฌํ๊ฑฐ๋ ๊ฐ์ ํ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค.
Scons 3๋ Python 3.5+๋ฅผ ์ง์ํฉ๋๋ค. https://scons.org/tag/releases.html .
๋๋ Scons๋ฅผ ์ด๋ป๊ฒ ๊ทธ๋ ๊ฒ ์ซ์ดํ๊ณ CMake๋ผ๋ ๊ตฌ์ฑ ์๋ง์ ์ข์ํ ์ ์๋์ง ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ฌ์ฉ์๋ผ๋ฉด ์์ ์ ๋น๋ ์ค์ ์ ์ ์ํ๊ธฐ์กฐ์ฐจ ์ด๋ ต๊ณ ์ต์ ๊ณผ ์ ํ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ด์ ์ธ ์ ์์ธ๋ฐ, ๋์๊ฒ ๊ณ ํต๋ง ๊ฐ์ ธ๋ค์ฃผ์๊ณ , Godot๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์๋ค๋ ์ฌ์ค์ ๋๋ ์ค์ ๋ก ์๋ํ๋ค.
์ด์จ๋ ๋ ๋์ ์๋ฃจ์ ์ด ๋ ๊ฒ ๊ฐ์ผ๋ฉด ๊ณ์ ์๋ํ๊ณ CMake์ ๋ํ ๋ด ๊ฒฌํด๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ผ๋ฉด ์์ ๋ง์ ๋น๋ ์ค์ ์ ์ ์ํ๊ธฐ์กฐ์ฐจ ํ๋ ๊ณณ,
๊ทธ๊ฒ์ด ๋ฌป๋๋ค๋ฉด CMake๊ฐ ์๋ชป ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๋๊ตฌ ์ฒด์ธ ์ค์ ์ ๋๊ตฌ ์ฒด์ธ ํ์ผ์ ์์ด์ผ ํ๋ฉฐ ๋ชจ๋ ํ๋ก์ ํธ ํน์ ๊ตฌ์ฑ์ ํ๋๊ทธ(๋๋ GUI ๋๋ ์บ์ ํ์ผ ํธ์ง ๋ฑ)๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋ฌธ์ํ๋๊ณ ์ ๋ ฅ๋๋ฉฐ ํ๋ก์ ํธ ์์ฑ์๋ ๋ ธ์ถ๋ ๊ตฌ์ฑ์ ์ ๋ฌธ์ํํ๊ณ ์ ๋ ฅํ ์ ์์ต๋๋ค. CGold์ ์ต์ CMake ํ์ค์ ์ฝ์ด์ผ ํฉ๋๋ค.
@Faless ์๋ฌด๋ CMake ์ธ์ด๊ฐ ๋์ฐ
@OvermindDL1 ์ CGold๋ฅผ ์ฝ์ผ๋ผ๋ ์ ์์ ์ข์ํฉ๋๋ค.
๊ทธ๊ฒ์ด ๋ฌป๋๋ค๋ฉด CMake๊ฐ ์๋ชป ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์ ๋๋ค.
๊ธ์, ๋๋ ๊ทธ๊ฒ์ ์๋ชปํ๊ณ ์๋ ๊ณณ์์ ๋ด๊ฐ ๋ง๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ถ์ธกํฉ๋๋ค.
์์งํ ๋งํด์, ๋๋ -DI_LOVE_CMAKE_AND_MAKE_DEFINES_LONG=on
(์ ๋ง? on
?)๋ฅผ ํตํด ํ๋๊ทธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค. ์บ์ ํ์ผ O_o ํธ์ง์ ๋ํ ์์ด๋์ด๋ ๋งํ ๊ฒ๋ ์์ต๋๋ค. ๋๋ ํ๋๊ทธ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋ ํด๋๋ฅผ ์ญ์ ํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ํด์ผ ํฉ๋๋ค(์บ์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์)... ์ฆ๋ถ ๋น๋์ ๊ฒฝ์ฐ...
ํธ์ง: ๋ํ ๋ด๊ฐ Scons์ ๋ํด ์ ๋ง ์ข์ํ๋ ๊ฒ(์ ์ด๋ Godot์์๋, ๋ฌผ๋ก ์ด๊ฒ์ ๋ค๋ฅธ ๋น๋ ์์คํ
์์๋ ๊ฐ๋ฅํ ์ ์์)์ ์ค์ ๋ก ํ์ค์ด๋ ๋ฌธ์๋ฅผ ์ฝ์ง ์๊ณ scons -h
์คํํ๋ค๋ ๊ฒ์
๋๋ค
GitHub์์ ๋ณธ ๋น๋ ํ์ผ์ 95%๊ฐ ์๋ชป๋์์ต๋๋ค. ์ฌ๋๋ค์ ๋น๋ ์์คํ ์ ๊ฒ์ผ๋ฅด๋ฉฐ ํ๋ฌผ ์ญ๋ฐฐ ๊ดํ์ ๋ฐ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ์ฎ์ต๋๋ค.
@isaachier , ๋ฉํธ๋ฆญ์ฒ๋ผ ๋์ CMake ํ์ผ๊ณผ ์ข์ CMake ํ์ผ์ ๋ ๊ฐ์ง ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? https://github.com/ARMmbed/mbedtls/blob/development/CMakeLists.txt ?
๋ด๊ฐ ๋ณธ ๊ฒ๋ณด๋ค ๋ซ์ต๋๋ค. ๊ทธ๋๋ CMake >= 3.0์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ต์ CMake์ ๋ํ ๊ฒฝํ์ด ์๋๋๋ค.
๊ธ์, ๋๋ ๊ทธ๊ฒ์ ์๋ชปํ๊ณ ์๋ ๊ณณ์์ ๋ด๊ฐ ๋ง๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ถ์ธกํฉ๋๋ค.
์์ฆ์ ์ ํ๋ ๊ฒ ๊ฐ์์.
์์งํ ๋งํด์ -DI_LOVE_CMAKE_AND_MAKE_DEFINES_LONG=on(์ ๋ง? on?)์ ํตํด ํ๋๊ทธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค. ์บ์ ํ์ผ O_o ํธ์ง์ ๋ํ ์์ด๋์ด๋ ๋งํ ๊ฒ๋ ์์ต๋๋ค. ๋๋ ํ๋๊ทธ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋ ํด๋๋ฅผ ์ญ์ ํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ํด์ผ ํฉ๋๋ค(์บ์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์)... ์ฆ๋ถ ๋น๋์ ๊ฒฝ์ฐ...
on
์ ์ฌ์ฉํ ํ์๋ ์์ผ๋ฉฐ true
, 1
๋ฐ ๊ธฐํ ๋ค์ํ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋๊ทธ ์ด๋ฆ๊ณผ ์ ์ด์ธ๋ฆฌ๋ ์ ์ ํ ๋ถ๋ฆฌ์ธ ์ด๋ฆ์ ์ ํํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ต์ ์ ๋ณ๊ฒฝํ๋ฉด ๋น๋ ํด๋๋ฅผ ๋ค์ ๋น๋ํ ํ์๊ฐ ์์ต๋๋ค. cmake๋ ํ์ํ ๋ ๋ค์ ๋น๋ํ๋ ๋ฐ ํ์ํฉ๋๋ค.
๊ทธ๋๋ C/C++ ๋น๋ ์์คํ ์ ๋ง์ง๋ ๋ชจ๋ ์ฌ๋์ CGold ์ CMake์ ๊ณต์ ๋งค๋ด์ผ์ ์ฝ์ด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ์ข ์ข ๋ฟ๋ง ์๋๋ผ ๋ง์ ์งง์, CMake์ ๊ถ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ ๋ง ์ฝ์ต๋๋ค. ๊ณ ๋ CMake2 ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์ค์ ๋ก CMake 2.x ๋ฒ์ ์ ์์กดํ๋ ์ฌ๋์ ์ ๋์ ์ผ๋ก ์๋ชป๋ ์ผ์ ํ๊ณ ์์ต๋๋ค(๋์ ๋ฐ ๋๊ตฌ ๋ชจ์์ ์ ๋๋ก ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ต์ ์ ์ ๋๋ก ์ค์ ํ์ง ์๋ ๋ฑ...).
์ค๋ช ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ ๋ ์ฌ์ ํ ํ์์ ์ด์ง๋ง Godot์์ ์ด๋ป๊ฒ ์๋ํ ์ง ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. :).
@slurps-mad-rips C++11 ๋ชจ๋๋ฅผ ํ์ฑํํ๊ธฐ ์ํ CMake ์์ ์ฝ๋๊ฐ ํฌํจ๋ ๊ทํ์ ๊ฒ์๋ฌผ์ ๋ค์์ ํฌํจํ์ง๋ง ์ด์ ๊ตญํ๋์ง ์๋ ๋ค์ํ ์ด์ ๋ก ์ธํด ์์ ํ ๋นํ์ค CMake์ ๋๋ค.
ํด๋น ๊ฒ์๋ฌผ์ ํ์๋ ์์ฒด ์ค๋ช ๋จ์ํ ์ค๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ์ํ ๋:
cxx = meson.get_compiler('cpp')
# This is an extremely simplified approach. One can do a different option when dealing with MSVC and gcc support.
args = compiler.get_supported_arguments('-std=c++11', '-stdlib=libc++')
add_project_arguments(args)
๋๋ฑํ ๋จ์ํ(๋ ๋ง์ ์์ฑ๋ ์ถ๊ฐํ ์ ์๋ค๋ ์ ์์) CMake๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
set_target_properties(godot PROPERTIES CXX_STANDARD 11)
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ฉ๋ ํด์ฒด์ธ์ด ํด๋น ๋ชจ๋๋ฅผ ์ค์ ํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์๋์ง ํ์ธํฉ๋๋ค(๋ํ ์ง์ํ์ง ์๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์คํจ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ ์ ์์). ๋น๋ ํ์ผ์ ํน๋ณํ ์ปดํ์ผ๋ฌ๋ณ ๋ช ๋ น์ค ํ๋๊ทธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ํด์ฒด์ธ ํ์ผ์๋ง ์กด์ฌํด์ผ ํ๊ณ ์ด์ ๊ฒ์๋ฌผ์ ํ์๋ meson ์์ ๊ฐ ์ค์ ๋ก ํน์ ์ธ์๋ฅผ ์ง์ ํ๋ค๋ ์ฌ์ค์ ๋ณธ์ง์ ์ผ๋ก ์ง์๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ํ๋์ฝ๋ฉํ๊ณ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฏ๋ก ๋งค์ฐ ์ข์ง ์์ ํ์์ ๋๋ค.
์๊ฐํ ์ ์๋ ๊ฑฐ์ ๋ชจ๋ ๋๊ตฌ ์ฒด์ธ(๋ค์ํ ์ข ๋ฅ์ MSVC, GCC/Clang, Android, iOS, emscripten ๋ฑ... ๋ฑ)์ ๋ํด ๋ฏธ๋ฆฌ ๋น๋๋ CMake ๋๊ตฌ ์ฒด์ธ
ํธ์ง: ๊ทธ๋ฆฌ๊ณ ๊ด๋ฒ์ํ ์ง์์ ๊ฒฐ์ฝ ๋ฌด์ํ์ง ๋ง์ญ์์ค. KDevelop(๋ด๊ฐ ์ฌ์ฉํ๋ IDE, ํฅ๋ฏธ๋กญ๊ฒ๋ CMake๋ฅผ ๋น๋ ํ์์ผ๋ก ์ฌ์ฉํ๊ณ ์ง์ฅ์์ ๊ฐ๋ CLion์ ์ฌ์ฉํ๊ณ CMake๋ ์ฌ์ฉ)์ ์ํ ํ๋ก์ ํธ ํ์ผ์ ์์ฑํ ์ ์๋ meson์ ๋ํด ์๋ฌด ๊ฒ๋ ์ฐพ์ ์ ์์ต๋๋ค. Visual Studio!)๋ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก CMake ํ๋ก์ ํธ๋ฅผ ์ด ์ ์์ต๋๋ค(์ํ๋ ๊ฒฝ์ฐ CMake๊ฐ ๋๋ถ๋ถ์ IDE์ ๋ํ ํ๋ก์ ํธ๋ฅผ ์ง์ ์์ฑํ ์ ์๋ ๊ฒ ์ธ์๋)
@OvermindDL1
์ ๋์ ์ผ๋ก ๋นํ์ค CMake๊ฐ ์๋๋๋ค. ์ฝ๋ ์ํ์ CXX_STANDARD
๊ฐ ์กด์ฌํ์ง ์๋ ๋ฒ์ ์ธ CMake 3.0์ ๋์์ผ๋ก ํฉ๋๋ค. ์ฌ๊ธฐ ์์ cxx_std_
๋ฐ ํ์ค ๋ฒํธ์ ํจ๊ป target_compile_features
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฝ๊ฒ ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ค ๋ฒ์ ์ ์ค์ ํ๋ ์๋กญ๊ณ ํ๋์ ์ธ cmake ๋ฐฉ๋ฒ์
๋๋ค. set_target_properties
๋ ์ด์ ์ ๋์๋ณ ์ ๊ทผ ๋ฐฉ์์
๋๋ค.
์ฌ์ค, CMake์ ๋ฌธ์ ์์ ๊ฐ์ ธ์จ ์ ํํ ์ฝ๋๋
target_compile_features(mylib PUBLIC cxx_std_11)
๊ทธ๋ฌ๋ CXX_STANDARD
๋ clang์ด ๊ตฌ์ฑ๋์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก libstdc++๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ clang์ ๋ํ libc++ ์ง์์ ์ค์ -stdlib=libc++
์ง์ํ๋์ง ํ์ธํ๊ณ ์ ๋๋ ์ดํฐ ํํ์์ ํตํด ์ปดํ์ผ๋ฌ์ ์ ๋ฌํ๋ ๊ฒ์
๋๋ค. ์ด์ ๊ด๋ จํ์ฌ ๋
ธ์ถ๋์ง ์์ ๋ณ์์ ๊ด๋ จ๋ ๊ฒ์ ์์ต๋๋ค.
๋ํ ๋ค์ ์๋์์ Meson๋ณด๋ค CMake๋ฅผ ๋์์ผ๋ก ํ ๊ฒ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ๋ช ๋ฌ ์ ์ ์์ฑํ ๋๊ธ์์ ์์ ํ๊ธฐ ์ํด ๋๊ธ์ ์ญ์ ํ ๊ฒ์ ๋ํด ๊ฐ์ฌํ์ง ์์ต๋๋ค. ์ฌ์น๊ฐ ๋ถ์กฑํ๊ณ ๋ด ์๊ฒฌ์ผ๋ก๋ ๋ํ์ ์๋ฌด ๊ฒ๋ ์ถ๊ฐํ์ง ์์ต๋๋ค.
CMake 3.0์ ๋ ์ด์ ์ง์๋์ง ์์ ๋งํผ ์ค๋๋์์ต๋๋ค(2014๋ 6์ 10์ผ). ํ์ฌ๋ก์๋ CMake 3.12๋ณด๋ค ์ต์ ๋ฒ์ ์ ์ ์งํ๋ ๊ฒ์ด ์ข์ง๋ง ํ์ฌ๋ก์๋ CMake 3.10๋ณด๋ค ๋ฎ์ ๋ฒ์ ์ ์คํํด์๋ ์ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์, ๋น์ ์ด ์ค ์๋ ์ ์ ์ผ๋ก ๋ฐ๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค (CGold์กฐ์ฐจ๋ ๊ทธ๋ ๊ฒํ์ง ์๋๋ค๊ณ ์ธ๊ธํ๋ค๊ณ ์๊ฐํฉ๋๋ค).
๊ทธ๋ฆฌ๊ณ ์, ์ ๋ target_compile_features๋ฅผ ์๋ฏธํ์ต๋๋ค. ^.^;
๊ทธ๋ฌ๋ CXX_STANDARD๋ clang์ด ๊ตฌ์ฑ๋์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก libstdc++๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ clang์ ๋ํ libc++ ์ง์์ ์ค์ ํ์ง ์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ Linux ๋ฐฐํฌํ์์ ๊ธฐ๋ณธ์ ์ผ๋ก libc++๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋์ง ์์ต๋๋ค. ์ด๋ ๋ง์ปค ์ค๋ฅ ๋ฐ ABI ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค). ์ด๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ปดํ์ผ๋ฌ๊ฐ -stdlib=libc++๋ฅผ ์ง์ํ๋์ง ํ์ธํ๊ณ ์์ฑ๊ธฐ ํํ์์ ํตํด ์ปดํ์ผ๋ฌ์ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค. ์ด์ ๊ด๋ จํ์ฌ ๋ ธ์ถ๋์ง ์์ ๋ณ์์ ๊ด๋ จ๋ ๊ฒ์ ์์ต๋๋ค.
ํ์ฌ ํด์ฒด์ธ์ ๋ชจ๋ clang์ ๋ํด ์ ์ํํฉ๋๋ค. ์ ์ด๋ C++14์์๋ (๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ C++17๊ณผ ํจ๊ป) ์ปดํ์ผํฉ๋๋ค.
๋ํ ๋ค์ ์๋์์ Meson๋ณด๋ค CMake๋ฅผ ๋์์ผ๋ก ํ ๊ฒ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ๋ช ๋ฌ ์ ์ ์์ฑํ ๋๊ธ์์ ์์ ํ๊ธฐ ์ํด ๋๊ธ์ ์ญ์ ํ ๊ฒ์ ๋ํด ๊ฐ์ฌํ์ง ์์ต๋๋ค. ์ฌ์น๊ฐ ๋ถ์กฑํ๊ณ ๋ด ์๊ฒฌ์ผ๋ก๋ ๋ํ์ ์๋ฌด ๊ฒ๋ ์ถ๊ฐํ์ง ์์ต๋๋ค.
์ฃ์กํฉ๋๋ค. ๋ฐฑ๋ก๊ทธ๋ฅผ ์ฝ๋ ๋์ ๋ ์ง๋ฅผ ํ์ธํ์ง ๋ชปํ์ต๋๋ค(์ฌ๊ธฐ์ ๋ง์ ๋ฐฑ๋ก๊ทธ๊ฐ ์์ต๋๋ค). ๋๋ ๋ฐฉ๊ธ ๋ช ๋ ๋์ ๋ณด์์จ ์ด๋ค ์ข ๋ฅ์ ํ๋์ ์ธ ์ ์์ ๋ํด ๋น์ฐธํ๊ฒ ์๋ชป๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๊ฒ์ ๋ฐ๊ฒฌํ๊ณ ์ผ๋ง ์ง๋์ง ์์ ๊ฒ์๋ฌผ์ ์์ ์ฌํญ์ด ํ์๋์ง ์์ ์๋ชป๋ ์ ๋ณด๊ฐ ์ ํ๋์ง ์๊ธฐ๋ฅผ ์ํ์ต๋๋ค. :-)
์ด๋ ํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ปดํ์ผ๋ฌ๊ฐ -stdlib=libc++๋ฅผ ์ง์ํ๋์ง ํ์ธํ๊ณ ์์ฑ๊ธฐ ํํ์์ ํตํด ์ปดํ์ผ๋ฌ์ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ค, ์ ๋์ ์ผ๋ก ์ง๊ธ๊น์ง ์ด์ ๊น์ง ๋น๋ ํ์ผ์ ๋ํ๋์ง ์์์ผํฉ๋๋ค ํด์ฒด์ธ ํ์ผ์ ์์ ์ ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ๋ ธ์ถ๋์ง ์์ ๋ณ์์ ๊ด๋ จ๋ ๊ฒ์ ์์ต๋๋ค.
๋๋ ๋จ์ง ๋จ์ผ ์์น์ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ๋ ๋ค์ ์ค์ ํ ๋ณ์๋ฅผ ์ฐธ์กฐํ์ ๋ฟ์ ๋๋ค. ์ด๋ ๋ค์ํ ์ด์ ๋ก CGold์์ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
CMake 3.0์ ๋ ์ด์ ์ง์๋์ง ์์ ๋งํผ ์ค๋๋์์ต๋๋ค(2014๋ 6์ 10์ผ). ํ์ฌ๋ก์๋ CMake 3.12๋ณด๋ค ์ต์ ๋ฒ์ ์ ์ ์งํ๋ ๊ฒ์ด ์ข์ง๋ง ํ์ฌ๋ก์๋ CMake 3.10๋ณด๋ค ๋ฎ์ ๋ฒ์ ์ ์คํํด์๋ ์ ๋ฉ๋๋ค.
๊ทธ๋ค์ ํด์๋ ์ ๋์ง๋ง ์ผ๋ถ ์ฅ์๋ ์์ต๋๋ค. ์ต์ ๊ธฐ์ ๊ณผ ์ต์ ๊ธฐ์ ์ ์ ์งํ๋ ค๋ ๊ฒ์ ์์ง์ ๊ฒฝ์ฐ ์ต์ CMake๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ 3.5์ ์ด๋ค ๊ฒฝ์ฐ์๋ 3.4์ ๊ฐ์ ์ด์ ๋ฒ์ ์์ ๋ฉ์ถ ๋งค์ฐ ํ๋์ ์ธ ํ๋ก์ ํธ์ ๋ํด ์ ์๊ณ ์์ต๋๋ค. ์ฌ์ค, ์ ์๋ ค์ง ์ผ๋ถ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ ํ CMake 2.8์ ๋์์ผ๋ก ํฉ๋๋ค(SDL2, libssh2, libgit2 ๋ฑ ์ฐธ์กฐ).
๊ทธ๋ฌ๋ ์, ๊ทธ๊ฒ์ ๋๊ตฌ ์ฒด์ธ ํ์ผ์ ์์ ์ด๋ฉฐ ์ ๋ ๋น๋ ํ์ผ์ ๋ํ๋์ง ์์์ผ ํฉ๋๋ค.
ํด์ฒด์ธ ํ์ผ์ด ์ ์์ฑ๋์๊ณ ๊ฐ๋ฅํ ๋ชจ๋ ์์คํ
๊ณผ ๋ชจ๋ ๋ฒ์ ์ CMake๋ฅผ ํฌํจํ๋ค๋ ๊ฐ์ ์ ํ๋ ๊ฒ์ ํ์ฌ์ ์ผ๋ฐ์ ์ธ C++ ์ํ๊ณ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. ๊ทธ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ libstdc ++ ๋๋ libc์ ++ ์ฉ์ผ๋ก ์ปดํ์ผ ํ ์์๋ ์ต์
์ (ํนํ ํตํด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ FetchContent
ํธ์ถ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ ๊ณต ๋ ํ์๊ฐ์๋ค. CheckIncludeCXX
๋ฐ CheckCXXCompileFlag
์์ง ์กด์ฌํ์ง ์๋ GCC ์๋์ ์์ง๋ง (๋ฐ๋ ๋ฐ ๋ถ์ฌ์ฅ) ์ฐํ ์๋์์๋์ ์ฌ์ง์ด ์ผ๋ถ ํ๋๊ทธ ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ ๋ฌธ์ ๋ ์ปดํ์ผ๋ฌ ์ธํฐํ์ด์ค๊ฐ ํฌ๊ฒ ๊ฐ๋ผ์ง๊ณ ๊ณต๊ธ์
์ฒด๊ฐ ํธํ์ฑ ์ต์
์ ์ฉ์ดํ๊ฒ ํ๊ฑฐ๋ ์ฌ์ง์ด ๊ณตํต ์ธํฐํ์ด์ค์ ๋ํด ๋
ผ์ํ๋ ๋ฐ ์๊ฐ์ ์๋นํ๋ ๋์ ์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๊ฐ๋ฐ์์ธ ์ฐ๋ฆฌ์๊ฒ ๊ทธ ๋์์ ๊ฐ์ํ๋ค๋ ๊ฒ์
๋๋ค. ์ ๋ขฐ ๋,์ด ํ์ฑ์ ์๋ฌด๋ ๋ ๋๋ณด๋ค C ๋ฐ C ++ ๋น๋ ์์คํ
๊ณผ ์์กด์ฑ ๊ด๋ฆฌ์ ์ํ์ ๋ํ ํ๊ฐ,ํ์ง๋ง ํ์ CMake์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ์กด์ ์ค์ฉ ์์ต๋๋ค. ๋น๋ ์์คํ
์์ CMake๋ก ์ ํํ ๋ ์ข์ ์ ์ ๊ฐ์ฅ ์ต์ ์ ๊ธฐ๋ฅ์ผ๋ก ๊ฒ์ดํธ๋ฅผ ์์ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฌธ์ ๋ ๋น๋ ์์คํ
์ ์ ์ฒด๊ฐ ๋ฉ๋๋ค. ์๋ฌด๋ ๋ง์ง๊ธฐ๋ฅผ ์ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค(์ฝ๋ ์์ฑ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๋์ ์คํฌ๋ฆฝํธ๋ก ๋ถ๋ฆฌํ ์ฉ๊ฐํ ์ํผ ์ ์ธ). ๊ทธ๋ฌ๋ ์์์ ๋ฒ์ด๋์ง ์๋๋ก ๋ช ๊ฐ์ง ์์
์ด ํ์ํ ๊ฒ์
๋๋ค. (๊ทธ ์ด์ ๋ ... ๋ด ๋ง์ ๊ทธ๊ฒ์ด ๋น๋ ์์คํ
์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ํญ์ ๊ทธ๋ ์ต๋๋ค)
ํนํ CMake์์ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ค์ ๋ก ์ฆ๊ธฐ๋ ์ฌ๋์ ๋์ผ ๊ฒ์ ๋๋ค.).
ํด์ฒด์ธ ํ์ผ์ด ์ ์์ฑ๋์๊ณ ๊ฐ๋ฅํ ๋ชจ๋ ์์คํ ๊ณผ ๋ชจ๋ ๋ฒ์ ์ CMake๋ฅผ ํฌํจํ๋ค๋ ๊ฐ์ ์ ํ๋ ๊ฒ์ ํ์ฌ์ ์ผ๋ฐ์ ์ธ C++ ์ํ๊ณ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. clang์ ์ฌ์ฉํ ๋ libstdc++ ๋๋ libc++์ฉ์ผ๋ก ์ปดํ์ผํ๋ ์ต์ (ํนํ FetchContent ํธ์ถ์ ํตํด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ)์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๊ทธ๋ฐ ๊ฒ๋ค์ ๋๊ตฌ ์ฒด์ธ์ด ์๋ํ ์ ์๋ ๋๊ตฌ ์ฒด์ธ์ ์์ฑ์ด ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค.
๋ฟ๋ง ์๋๋ผ ๋งค์ฐ ๋ ํนํ ์ค์ ์ด ์๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋ง์ถคํ๋ Android ๋น๋์ ๊ฐ์ ๋๊ตฌ ์ฒด์ธ ํ์ผ์ ํฌํจํ๋ ๊ฒ์ด ์์ ํ ํฉ๋ฆฌ์ ์ ๋๋ค(cmake ๋๊ตฌ ์ฒด์ธ์ ํ์ฅ๋ ํด๋ฆฌ ์ธํธ๊ฐ ์ง๊ธ๊น์ง ํ์ํ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋ค๋ฃจ์์ง๋ง).
๋ฌธ์ ๋ ๋น๋ ์์คํ ์ ์ ์ฒด๊ฐ ๋ฉ๋๋ค. ์๋ฌด๋ ๋ง์ง๊ธฐ๋ฅผ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค(์ฝ๋ ์์ฑ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๋์ ์คํฌ๋ฆฝํธ๋ก ๋ถ๋ฆฌํ ์ฉ๊ฐํ ์ํผ ์ ์ธ). ๊ทธ๋ฌ๋ ์์์ ๋ฒ์ด๋์ง ์๋๋ก ๋ช ๊ฐ์ง ์์ ์ด ํ์ํ ๊ฒ์ ๋๋ค. (๊ทธ ์ด์ ๋ ... ๋ด ๋ง์ ๊ทธ๊ฒ์ด ๋น๋ ์์คํ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํญ์ ๊ทธ๋ ์ต๋๋ค)
์ด๊ฒ์ ์ค์ ๋ก ์ง๊ธ CMake๋ฅผ ์ ํํ๊ธฐ ์ํ ์ข์ ํฌ์ธํธ์ ๋๋ค. ์ข๋ ๋์๋ 10๋ ์ด์์ ์ด์ ๊ฒฝํ์ ์ฒ๋ฆฌํ ํ ํ์ฌ ์ ์๋ํ๋ ์ ์ ์๋ ํ์ค ์ธํธ๊ฐ ์์ต๋๋ค.
ํนํ CMake์์ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ค์ ๋ก ์ฆ๊ธฐ๋ ์ฌ๋์ ๋์ผ ๊ฒ์ ๋๋ค.).
๋๋ ๊ทธ๊ฒ์ด ๋์๊ฒ ์๋ฏธ๊ฐ ์์ ๋งํผ ์ถฉ๋ถํ ๊ธธ๊ฒ ์ผ์ง๋ง ๊ทธ๊ฒ์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฐ๋์ ํด๋น๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ง๋ง ๋์๊ณผ ๋น๊ตํ์ฌ ํ์คํ ๊ทธ๊ฒ์ ์ฆ๊น๋๋ค. ^.^;
์ ๋ ์ง๋ ๋ช ๋ ๋์ ๋ค์ํ ๋น๋ ์์คํ ์ ์ฌ์ฉํด ์์ต๋๋ค. ์ต๊ทผ์ ๋์๊ฒ ๊ฐ์ฅ ์๋ฏธ๊ฐ ์์๋ ๊ฒ์ CMake์ด์ง๋ง SCons์ ๋งค๋ ฅ๊ณผ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ์ ์ฐํ์ง ํ์คํ ์ ์ ์์ต๋๋ค.
SCon์ด ์๋ฒฝํ์ง ์๋๋ผ๋(๋น๋ ์์คํ ์ด ๋ฌด์์ ๋๊น?) ์ถฉ๋ถํ ์ข์ ์ ์์ต๋๋ค.
SCons๊ฐ ๋ ํฌ์ธํธ ๋ชจ๋์ ๋ํด "์ถฉ๋ถํ ์ข์" ์ ์๋ฅผ ๋ฐ์ผ๋ฉด ๊ทธ๋๋ก ์ ์งํ์ญ์์ค.
SCons๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ต์ฒดํ์๊ณ ์ ์ํ ์ฌ๋ ์ค์ ์ค์ ๋ก Godot ๋น๋ ์์คํ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ฐฐ์ฐ๊ธฐ ์ํด ๋ ธ๋ ฅํ ์ฌ๋์ด ์์ต๋๊น?
ํํธ๋ก, ๊ทธ๊ฒ์ ์์ฒญ๋๊ฒ ๋ณต์กํ๊ณ ๋ง์ ์์ ํ๋ซํผ์ ๋ํด CMake ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ์ฐ๋ฆฌ๊ฐ ํ๋ ๋ฐฉ์์ผ๋ก ๋์์ ์ฌ๋ฌ ๋น๋ ๋์์ ๊ตฌ์ฑ/์ปดํ์ผํ ์ ์๋๋ก ํ๋ ๋ง์(๋๋ ์ด๋ค) ํ๋ก์ ํธ๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"์ ๋ Godot ๋น๋ ์์คํ ์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด์ํ ๊ฒ์ ๋๋ค"๋ผ๊ณ ๋งํ ์ฌ๋๋ค์ ๋ชจ๋ ๋ ธ๋ ฅ์ SCons๊ฐ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ณต์ก์ฑ์ ๊นจ๋ซ๊ณ ์ง๊ธ๊น์ง ๋น์ฐธํ๊ฒ ์คํจํ์ต๋๋ค.
๋์๊ฒ ๊ทธ๊ฒ์ ์ง๊ธ๊น์ง ์์ ์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ์ ๋๋ค. ์๋ฌด๊ฒ๋ ๊ฐ๊น์ด์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ๊ธฐ๋ณธ ์ปดํ์ผ ์๊ฐ(SSD๊ฐ ์๋ ์ค๊ธ์์ ๊ณ ๊ธ ์์คํ ์์ ๋จ 4/5์ด)์ ๋ํด ๋ถํํ๋ค๋ฉด, ๋จผ์ Godot๊ฐ ๋น๋ํ ๋ ์ํํ๋ ๋ชจ๋ ๊ฒ์ ์ดํดํ๊ณ CMake ๋๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์์ ์ํํ๋ ๋ฐฉ์์ ํ์ธํด์ผ ํฉ๋๋ค. .
๋๋ ์ดํด ๋ณด์๋ค. CMake ๋๋ ๋ค๋ฅธ ๊ณณ์์ ์คํ ์ทจ์ํ ์ ์๋ค๊ณ ํ์ ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ํ ๊ฒ์ผ๋ฅด๋ค ;). ์ฐ๋ฆฌ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณผ ๊ฒ์ ๋๋ค.
๋ฐ์ ค ํฌํธ๋ฅผ ํ ์ฌ๋์ผ๋ก์. ๋๋ Godot ํธ์ง๊ธฐ๊ฐ ์์ด์ฝ ์์ด ์์๋๋ ์ง์ ์ ๋๋ฌํ ์ ์์์ต๋๋ค.
CMake๊ฐ ๊ทธ ์ง์ ์ ๋๋ฌํ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค.
์ถ์ . ํ๋ซํผ์ด ๋ง์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒฝ์์ ํ๋ก์ ํธ๋ Urho3d์ ๋๋ค.
cmake์์ ๋ด bazel ๊ฒฐ๊ณผ๋ฅผ ์ฌํํ์ต๋๋ค.
https://github.com/fire/godot/tree/cmake
Visual Studio 2017์ด ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
git clone https://github.com/fire/godot.git -b cmake
scons p=windows
Modify platform/register_platform_apis.gen.cpp
#include "register_platform_apis.h"
void register_platform_apis() {
}
void unregister_platform_apis() {
}
choco install cmake ninja -y
# Open visual studio command prompt amd 64 2017 native
# Go to godot source directory
cd ..
mkdir build
cd build
cmake ../godot -GNinja
ninja
๊ฐ์ง๊ณ ๋์์ฃผ์ธ์. ํธ์ง๊ธฐ์๋ bazel ๋น๋(์์ด์ฝ ์์)์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด ์ํ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ฉ๋ชจ
@fire ๊ฐ์ฌํฉ๋๋ค. ์ด๋ฌํ CMake ํ์ผ์ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ(๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์ปดํ์ผ๋ฌ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์์๋๋ ์๊ฐ) ๊ฐ์ ํด์ผ ํ ๋ถ๋ถ์ด ๋ง์ด ์์ต๋๋ค. ๋ค์ ์ฃผ๋ง์ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์ผ์ ์ด ๋ณด๋ฅ ์ค์ ๋๋ค.
๋ฉ์ง ์ํ @fire. ์ฌ๊ธฐ ๋๊ตฐ๊ฐ๊ฐ ํ๋ ์ด์์ ๋น๋ ์์คํ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค . ์ฆ,
์ฝ๊ฐ์ ์ ๋ฐ์ดํธ. ๋๋ ์ค๋ @fire ์ ์์ ์ ์ง์ ํ๋ฏ๋ก ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ณ ๋ชฉ๋ก์ ์ถ๊ฐํ ๋ค์ ๋ ๋ง์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ณ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ ๋ฑ์ ์์ ์ ์ํํ๋ ๋์ ์ถ์ ์ข ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ด์์ ์ผ๋ก๋ ์ฝ๋ ์์ฑ ์คํฌ๋ฆฝํธ๊ฐ ๋น๋์ ๋ํ ์ง์ ์์ด ์คํ ๊ฐ๋ฅํ ๊ฒ์ฒ๋ผ ์คํ๋ ์ ์์ด์ผ ํฉ๋๋ค. ์ ์ ํ ํ์ผ์ด ์ ๋ฌ๋๋ ํ ๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ์์ ํ ์ด์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@slurps-mad-rips SCons ์์คํ ์์ ์ถ์ถํ๋ ๊ฒ์ SCons์์๋ ์ข์ ์๊ฐ์ ๋๋ค. ์ฒ๋ฆฌ ์ค์ธ ๋ ผ๋ฆฌ๊ฐ ๋๋ฌด ๋ง์ GIL์ ์ค๋จํ๊ณ ๋น๋ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค. ๋๋๋ก ๋ณ๋ ฌ๋ก ๋น๋ํ ๋ ์ผ๋ถ ํ์ผ ๋ซ๊ธฐ/์ด๊ธฐ ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก ์ด์ด์ง๋๋ค(์ข ์ข ์ปจํ ์คํธ์์ ๋ก ํ์ผ์ ์ด์ด ํด๊ฒฐ๋จ).
๋ชจ๋๋ค ์๋ ,
์ด ๊ณต๊ฐ์ ์ฌ์ฉํ์ฌ ์ฌ๋๋ค์ด CMake์ ๋ํ ํฌํธ์์ ์ต์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋๋ก ํ ๊ฒ์ ๋๋ค. ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด ์์ญ์ ํ ๋ก ์ ๋ฐฑ๋ก๊ทธ๊ฐ ๋ง๊ณ ์ปจํ ์คํธ๋ฅผ ๋๋ฌด ๋ง์ด ์๋ ๊ฒ์ ๋ญ๋น๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ํ์ ํ๋ค. ๋๋ ์ปจํผ๋ฐ์ค์ ์ฐธ์ํ๋ ๋์ ๋ค์ ์ฃผ ๋์ CMake ํฌํธ์์ ํด์์ ์ทจํด์ผ ํ์ง๋ง ์ฌ๊ธฐ ์์ ๋์ ์ด๊ธฐ ์ด์ ์๋์ ๋
ธ๋ ฅ์ ๋ณผ ์ CONFIGURE_DEPENDS
ํ์ผ์ Ninja์ ์๋ ๊ฒ์ ์ค์ ๋ก ๊ฝค ์ข์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ค๋ฅธ CMake ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ชจ๋์ด ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๊ฐ ์์ฑํ ๋์ฐ๋ฏธ CMake ๋ชจ๋์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ต์ 3.1 ์ํ๋ก ์ ๋ฐ์ดํธํ ์ ์์์ต๋๊น? ์ํ๋ ์ข์ ํ์ ์ด ๋ ์ ์์ต๋๋ค. ํ์ฌ ๋น๋๋ฅผ ์๋ ์ค์ ๋๋ค.
์ด ๋ฌธ์ ์ ์ ๋ชฉ์ ๋น๋ ์์คํ ์ Meson์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค . ์ฌ๊ธฐ์ CMake ํ ๋ก ์ ํ๋ ๊ฒ์ ๋ถ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. CMake์ ๋ํ ํ ๋ก ์๋ ์์ฒด ๋ฌธ์ ๊ฐ ์์ด์ผ ํฉ๋๋ค. Meson๊ณผ ๋ค๋ฅธ ๊ฒ์ ๋น๊ต๋ ๊ด์ฐฎ์ต๋๋ค.
@zaniar ์ผ๋ฐ์ ์ผ๋ก ๋น๋ ์์คํ ๊ณผ ๊ด๋ จํ์ฌ ์ด ์ค๋ ๋์์ ๋ง์ ๋ ผ์๊ฐ ์์์ต๋๋ค. ์ ๋ชฉ์ด ์ ๋ฐ์ดํธ๋์ง ์์๋ค๊ณ ํด์ ๊ฐ์๊ธฐ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ํ ๋ก ์ ์ํ ๋ชจ๋ ๋งฅ๋ฝ์ ์๊ณ ์ฒ์๋ถํฐ ๋ค์ ์์ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋ช ๊ฐ์ ์น์ ํ ๋ก ์ ๊ฐ์๊ธฐ ๋ฒ๋ฆฌ๋ผ๊ณ ํ๋ ๊ฒ์ ๋ถ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@fire ์ง๋ ๋ช ์ฃผ ๋์ ์ผ๋ก ๋ฐ๋นด๊ณ ๊ธ์์ผ์ ๋ง๊ฐ์ผ์ด ์ปธ๊ณ ๊ทธ ์ดํ์๋ ํฌํฌ๋ฅผ ์ต์ ์ ๋ณด๋ก ์ ๋ฐ์ดํธํ ์๊ฐ์ด ์๊ฒผ์ต๋๋ค. ๋ก์ปฌ์ ๋ช ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ด ์์ด ํธ์ํ๋ ๊ฒ์ ์์์ง๋ง ์ง๊ธ์ ์๊ฐ์ด ์์ต๋๋ค. (์ด ๋น๋ ์์คํ ํฌํธ, ๋ด gnu m4 ํฌํฌ, ์ด๋ฌ์ ๋ง์ง๋ง ์ฃผ์ C++ ํ์ค ์๋์๊ณ ํ์ ๋ฐ CppCon ์ ์ํด ์์ฑ ์ค์ธ 15๊ฐ ์ ์์ ์ฌ์ด์ ๋๋ ์์ ํ ๋ช์
์, Meson์ด ์๋ ํ ๋ก ๋์์ด์์ง๋ง ๊ทธ ์ดํ๋ก ๋ค๋ฅธ ๋น๋ ์์คํ ์ด ๊ฑฐ๋ก ๋๊ณ ๋ ผ์๋ ๊ฒ์ด ์์ฐ์ค๋ฌ์ด ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. @slurps์ ๊ฐ์ด ํผ๋จ๋ฆฌ๋ ๋์ ์ด ๋ฌธ์ ๋ด์์ ํ ๋ก ์ ์ ์งํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ๊ฒ์ ๋๋ค. -mad-rips๊ฐ ๋งํ๋ค.
CMake๋ก ์ด๋ํ๋ ๋ฐ ๋์ํฉ๋๋ค. ํด์ฒด์ธ์ผ๋ก ๋ง์ ์ง์์ ๋ฐ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Android ๋น๋๋ Godot๊ฐ '์ ์งํ ์ ์๋' ๊ฒ์ฒ๋ผ ๋ณด์ด๋ SCsub ํ์ผ์์ ์ํํ๋ ์์ ์ ๋นํด ๋งค์ฐ ์ฌ์์ง๋๋ค.
์คํ ์์ค ํ๋ก์ ํธ๋ก์ Godot๋ ์ ์งํ๊ธฐ ์ฝ๊ณ ๊ธฐ์ฌ์๋ค์ด ๋ ์ ์๊ณ ๊ธฐ์ฌํ ์ ์๋ ์๋ฃจ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ํ ์ด๊ฒ์ด GDNative ์ฑํ์ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ iOS, Android ๋ฑ ๋ชจ๋ ํ๋ซํผ์ ๋ํ ๋น๋๋ฅผ ์ง์ํ๋ ์ฝ๊ฒ ์์ ํ ์ ์๋ ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์์ ๋๋ ํ์ค ํ๋ก์ ํธ๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ํ ์ผ๋ฐ ๋ชจ๋์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ปดํ์ผํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์์ง์ ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๋ถ๋ฆฌํ ์ ์๋๋ก #19486๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
๋๋ ์ค์ ๋ก ์ด๊ฒ๋ค์ ๋ค๋ฃจ๊ณ ์๋ค. ๊ณง ์์ C++ ํ์ค ํ์์ธ CppCon์ผ๋ก ๋ฐ์๊ณ ์ง์ฅ์์ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค๋ฅผ ํ ์์ ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฏธ๋ฃจ์ง ์์์ต๋๋ค. ํฌํธ๋ฅผ ์๋ฃํ ์๊ฐ์ด ๋ง์ง ์์์ง๋ง ์์ผ๋ก C++ ์ฝ๋๋ฅผ ์์ฑํ๋ python ์คํฌ๋ฆฝํธ๋ฅผ ์ถ์ถํ๋ ๋ฐ ๋๋ถ๋ถ์ ์๊ฐ์ ํ ์ ํ ๊ฒ์
๋๋ค. ์ด๋ฒ ์ฃผ๋ง์ ํญ๊ตฌ์์ ์์
์ ์ฌ๊ฐํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค. ํ์ฌ ์๋์ผ๋ก ํ์ฌ ์ข
์์ฑ์ ํ๋ํ๊ณ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ฅ๋ ํจ์น๋ฅผ ์ ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ํ๊ฐํ๊ณ ์์ต๋๋ค. ๋๋ ํต์ฌ ๊ฐ๋ฐ์๋ฅผ์ํํด์ผํฉ๋๊น ์ง๋ฌธ ํ๋๊ฐ ์กฐ์ง์ ๊ธฐ๋ณธ REPO์์ ์์ ์ ์ ์ฅ์์์๋ ๋ชจ๋ THIRD_PARTY REPOS์ ๊นจ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค ์์ต๋๋ค. ๋๋ ๋ด ํ๋ก์ ํธ์์ FetchContent
์ ์๋นํ ์์กดํ๊ณ ์์ผ๋ฉฐ ํ์ฌ ์ฝ๊ฐ ๋ถ๊ธฐ๋ ์ด๋ฌํ ํ์ฌ ์ข
์์ฑ์ ๋ํด ๊ทธ๋ ๊ฒ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด์๋๋ฉด ์ฝ์ด ์ ์ฅ์์ ์ฆ๋ถ ๋ณ๊ฒฝ์ ์ํํ๋ ๋์์ cmake ํ์ผ์ ์ ๋ฆฌํ๊ธฐ ์ํด ์ฐจ๋ก๋ก ๊ฐ ์์
์ ์ํํ ์ ์์ต๋๋ค.
๋ํ ์์ง ์์ฒด๋ ๋ชจ๋ํํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก ๋๊ตฐ๊ฐ๊ฐ ์ํ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ตฌ์ฑ ์์ ๊ฐ ๊ธฐ์ ์ ์ผ๋ก ์๋ก ๋ณ๋๋ก ์ ๋ฐ์ดํธ๋ @chanon์ด ์ธ๊ธํ ๋ฌธ์ ๋ฅผ
๋ง์ง๋ง์ผ๋ก ํต์ฌ ๊ฐ๋ฐ์๊ฐ ์์คํ
์์ ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ๋น๋ ๋๊ตฌ์ ๋ํ ์ง์์ ์ถ๊ฐํ๊ณ ์์ต๋๋ค. clang-format, clang-tidy, ccache ๋๋ sccache, distcc, clang-check, ์ฃผ์ ์๋ํ์ด์ , ubsanitizer, ์ค๋ ๋ ์๋ํ์ด์ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ ๊ฐ์งํ๊ณ ์์)์ ์ ํ์ ์ผ๋ก ํ์ฑํํ ์ ์์ต๋๋ค. ์ต์ํ sccache ๋๋ ccache๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋ ๊ฐ์ ์ ํํ ๋ ๋๋ ๊ทธ ๋ฐ๋๋ก ์ ํํ ๋ ์ฝ๊ฐ์ ๋น๋ ๊ฐ์ ์ด ์ ๊ณต๋ฉ๋๋ค. CMake 3.13์ด ์ถ์๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋ด๊ฐ ์์กดํด์ผ ํ๋ ๋ช ๊ฐ์ง ๋ฒ๊ฑฐ๋ก์ด ์์
์ ํด๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์ ๊ฒ์ด์ง๋ง ์ค์ํ ๊ฒ์ ํ์ฌ "์์ํ๊ธฐ" ์ํฌํ๋ก๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ก ์ค์ ํ๋ค๋ ๊ฒ์
๋๋ค. Python 3.5 ์ด์์ ํตํด pip install
๋ฅผ ๊ณ์ ์คํํ๋ ค๋ฉด virtualenv ๋ด๋ถ์ ์์ผ๋ฏ๋ก ์ฌ๋๋ค์ด ์์คํ
ํ๊ฒฝ์ ์๋ง์ผ๋ก ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค. (์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ค์ํ ์ฝ๋ ์์ฑ ์คํฌ๋ฆฝํธ์ ๋ํ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐ python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์คํํ ์ ์์ผ๋ฉฐ ๋์ค์ ์ ๊ฑฐํ๋ ๊ฒ์ ๊ธฐ์ตํ ํ์๊ฐ ์์ต๋๋ค)
์๋ฌดํผ ๊ฐ์์ค๋ฌ์ด ์ ๋ฐ์ดํธ ์์์ ์ฃ์กํฉ๋๋ค. ๋๋ ์ด ํญ๊ตฌ๋ฅผ ์์ฑํ๋ ๋ฐ ์ ๋ ํ๊ณ ์์ง๋ง ์ต๊ทผ์ ์ถ์ด ๋ฐฉํด๊ฐ ๋์์ต๋๋ค ๐
๋๋ ๋ด ํ๋ก์ ํธ์์ FetchContent์ ์๋นํ ์์กดํ๊ณ ์์ผ๋ฉฐ ํ์ฌ ์ฝ๊ฐ ๋ถ๊ธฐ๋ ์ด๋ฌํ ํ์ฌ ์ข ์์ฑ์ ๋ํด ๊ทธ๋ ๊ฒ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ํ Hunter ๋ฅผ ์ฌ์ฉํ์ฌ Godot ํน์ ์ฝ๋ ์ ์ฅ์(์๋ฅผ ๋ค์ด github์ ๊ฐ์ ํน๋ณํ git repo)๋ฅผ ๋ง๋ค๊ณ ๊ฑด๋ฌผ, ์บ์ ๋ฑ์ ํ์์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ ๋ ๋ชจ๋ ์ข ์์ฑ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. (๋๋ ๋ชจ๋ ์ข ์์ฑ์ '๋ฉ์ธ' Hunter ํจํค์ง ์ ์ฅ์์ ์ ์ถํ๊ณ ๊ทธ๋๋ก ์ฌ์ฉํ์ญ์์ค). Hunter๋ ๋จ์ผ cmake ํ์ผ(HunterGate.cmake)์ด๋ฉฐ ํจํค์ง ์ ์ฅ์ ์ ๋ณด(๊ณต์ ํ์ผ์ด๋ ์ฌ์ฉ์ ์ ์ ํ์ผ์ด๋ )๋ฅผ ์ป๊ธฐ ์ํด ์ด ํ์ผ์ ํธ์ถํฉ๋๋ค.
๊ฒธ์ํ ์์ฒญ: ์ด ๋ฌธ์ ์ ๋๊ธ ์ค๋ ๋๊ฐ ์์ฒญ๋๊ฒ ์ปค์ก์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ
์ฌ๋ฌ๋ถ, ์๋ ํ์ธ์. ์ ๋ ์์ ๊ฒ์์ ๋ง๋ค๊ธฐ ์ํ ๋ค์ ์์ง์ผ๋ก Godot๋ฅผ ์ฌ์ฉํ ๊ณํ์ ๋๋ค.
๋๋ ์ด ๋ํ๋ฅผ ๋ณด์๊ณ CMake์ Meson(๊ทธ๋ฆฌ๊ณ autotools, tup, plain make, waf, SCons, ์ด ๋ชจ๋ ๋๊ตฌ์์ ์ ์ฒด ํ๋ก์ ํธ ์๋...)์ ๊ฒฝํ์ด ์๋ ์ฌ๋์ผ๋ก์ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ์ถ์์ต๋๋ค.
๋ด๊ฐ ๋ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ ์์คํ ์ Autotools, CMake ๋ฐ Meson์ด์์ต๋๋ค. ์ด๋ฏธ ํ๋ก๋์ ์ค์ ์์ ๋ค๋ฅธ ๋ชจ๋ ๋น๋ ์์คํ ์ ํ๊ธฐํ๊ธฐ ๋๋ฌธ์ ์ง๋ ๋ช ๋ ๋์ Meson๊ณผ CMake๋ฅผ ์ฌ์ฉํด ์์ต๋๋ค.
์ด๋ ๊ฒ์ ์ ํํ ๊น์? ๊ต์ฐจ ์ปดํ์ผ์ด ์ง์ค์ ์ด๊ณ ๋น ๋ฅธ ์ปดํ์ผ ์๊ฐ์ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ Meson์ ์ ํํฉ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก Unity ๋น๋ ๋ฐ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๊ฐ ์ง์๋จ).
CMake๊ฐ ํ์ค์ด๊ณ ๊ธฐ์ฌ๊ฐ ํ์ ์ค์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ CMake๋ฅผ ๊ณ ๋ คํ ๊ฒ์
๋๋ค. ๋๋ Meson์ ๊ฐ์ธ์ ์ผ๋ก ์ ํํ ๊ฒ์ด์ง๋ง ๊ทธ๊ฒ์ ๋จ์ง ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ผ ๋ฟ์
๋๋ค. ์๋ํ๋ฉด ๋๊ตฌ๊ฐ ํจ์ฌ ๋ ์ข๊ณ ์๊ฐ์ ์ ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค(CMake ์คํฌ๋ฆฝํ
, ๊ณต๊ฐ ์ฒ๋ฆฌ, ์์ฑ๊ธฐ ํํ์ ๋ฑ... ๋น์ ์ ๋ณด๊ณ ์์ต๋๋ค).
์๋์์ ์ด๋ฐ ๋ป๋ปํ ์๊ธฐ ํ๋ณด๋ฅผ ํด์ ์ฃ์กํฉ๋๋ค๋ง, ๋งฅ๋ฝ์ด ๊ทธ๊ฒ์ ๊ตฌ๊ฑธํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ถ๊ธํ ์ฌ๋์ด ์์ผ๋ฉด ์ฌ๊ธฐ์ ์ฝ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ Meson์ ๋ํ ์ผ๋ จ์ ๊ธฐ์ฌ๊ฐ ์์ต๋๋ค(4๊ฐ ๊ธฐ์ฌ).
StackOverflow์ ๋น๋ ์์คํ ์ ๋ํ (์ฝ๊ฐ ์ค๋๋) ์๋ต์ด ์์ต๋๋ค.
๊ทธ๋ฅ ๋ด 2 ์ผํธ :)
@germandiago ๊ทธ๊ฒ์ ํ๋ฅญํ ๊ธ์ ๋๋ค -- ์ ๋ ์ด ๋ฌธ์ ๋ฅผ ์ ์ ๋์ ์ถ์ ํด ์์ผ๋ฉฐ ์ฌํ๊ฒ๋ CMake ์ ์ฉ์ธ godot + CLion์ผ๋ก ์์ ํ ์ ์๋ค๋ฉด ํ๋ฅญ ํ ๊ฒ์ ๋๋ค.
์, ๋๋ถ๋ถ์ ์ต์ IDE๋ CMake ์ ์ฉ ๋ฐ/๋๋ ์ผ๋ถ ์ฌ์ฉ์ ์ ์ ๋น๋ ์์คํ ๋ฐ/๋๋ ๋ง์ ๊ธฐ๋ฅ์ ์๋ '์์ ํธ์ถ'์ ๋๋ค. CMake๋ ๊ฐ์น๊ฐ ์๋ ์๋ ์ ๋ง ํ์ค์ด ๋์์ต๋๋ค.
@dorkbox ๋ด๊ฐ ์์ ์ค์ธ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ป์ ์ ์๋ค๋ฉด ๋ถ๋ช ํ CLion(cmake + ninja) ์ํฌํ๋ก์์ ์์ ํ ์ ์์ ๊ฒ์ ๋๋ค.
@germandiago
์ ๋ CppCon 2018์ ๊ธฐ์ค์ผ๋ก meson์ ์ ์์ ์ด์ ์ค์ ๋ก ์น๊ตฌ๊ฐ ๋์์ต๋๋ค(๋ค์ ๐). ์ฐ๋ฆฌ๋ ๋ ๋ค "Remember Fortran"์ด๋ผ๋ ์ ๋ชฉ์ ๋ชจ๋์ ๊ดํ ๋ค์ ํ์์์ ๊ฐ์ ๋ ผ๋ฌธ์ ๋ณด๊ณ ๋ฐํํ ์์ ์ ๋๋ค. ๊ทธ ํ์์์ ๊ทธ์ ๋ ผ๋ฌธ(์ฌ์ค์ ๋ค์ ์ฃผ์ ๋๋ค!)๊ณผ ์ฐ๋ฆฌ๋ CppCon์์ ๊ฐ์ ๋น๋ ์์คํ ํจ๋์ ์์์ต๋๋ค.
๋๋ ์ค๊ฐ์๋ฅผ ์ฌ์ฉ ์ถ์ด์. ์ค๋ ๋์์ ๋ ์์ธํ ์ฝ์ด๋ณด๋ฉด ์ค๊ฐ์ ํฌํธ๋ฅผ ์๋ํ์ง๋ง ๋น์์๋ ์ํฉ์ด Scons์ ๋๋ฌด ํตํฉ๋์ด ์์์ต๋๋ค. ๋๋ ์ฌ์ ํ ํ์ฌ ์ฝ๋ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๋์ '์คํ ๊ฐ๋ฅํ' ์คํฌ๋ฆฝํธ๋ก ๊บผ๋ด๊ณ ์์ผ๋ฏ๋ก ๋ฏธ๋์ Meson์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์์ ์๋๊ฐ ๋๋ฆฌ๊ณ scons๋ฅผ ์์ ํ ์ญ์ ํ ์ ์๋๋ก ์ฝ๋ ์์ฑ์ ๋๊ธฐ ์ํด ๋ช ๊ฐ์ง jinja ํ ํ๋ฆฟ์ ์์ฑํ์ต๋๋ค. ์ฆ, ๋ด ๊ณต๊ฐ ํฌํฌ๋ ๊ตฌ์์ด์ง๋ง ์ง์ ์๋ ํฌํฌ๋ ์กฐ๊ธ ๋ ์์ ์์ต๋๋ค(๊ฐ์ธ ํฌํฌ์ ๋๊ธฐํ๋จ). ๋ถํํ๋ ์ผ์ด ๋ฐฉํด๊ฐ ๋์๊ณ ์๋์๊ณ ๋ ๋ถํํ๋ ๋ด ์๊ฐ์ ๋ ๋ง์ด 'ํ์น ' ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ํ์๋ ๊ฐ์ธ ํฌํฌ์ ์๋ ์ผ๋ถ ๋ก์ปฌ ์คํ์ ์์ ๋กญ๊ฒ ์ ๊ฑฐํ๊ณ ๋ง์นจ๋ด Godot cmake ๊ธฐ์ฐจ์ ๋ค์ ์ฌ๋ผ์ผ ํฉ๋๋ค. ํ์ฌ ์ํฌํ๋ก ํ๋ก์ธ์ค์ ํฐ ์ง์ฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ์ ์ฒด ํ ๋ฆฌํ์คํธ๊ฐ ๋ค์ด์ฌ ์ ์๋๋ก ์ต์ ์ ๋คํ๊ณ ์์ต๋๋ค.
(์ ์ณ๋๊ณ : ์ธ๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๋ชจ๋ ๋น์ ์ ํ์ด ๋์์ด์ ๋ด๊ฐ ์์ ๋๋ ๊ทธ๊ฒ์ ์์ํ ์ดํ ๋์์ด๋์์ต๋๋ค ๊ฒ์ ์๊ณ ,ํ์ง๋ง ๋ ์ด์ ++์ C์ ๋ฏธ๊ตญ ๊ตญ๋ฆฝ ๋ฐ๋ ๋ด ์ผ์ ์ ๊ธฐ์ค์์ํ๋ฅผ ๊ณ ์ฉ์ฃผ๋ฅผ ๋ํ๋ ๋๋ค. ํนํ ๋ชจ๋, ์ฝ๋ฃจํด ๋ฐ ๋ฒ์์ ๊ฐ์ ์ค์ํ ์ฃผ์ ๋ฅผ ๋ค๋ฃฐ ๋ ์ต๊ทผ์ ์ข ๋ ๊ฝ ์ฐจ ์์ต๋๋ค.)
์, ๋๋ถ๋ถ์ ์ต์ IDE๋ CMake ์ ์ฉ ๋ฐ/๋๋ ์ผ๋ถ ์ฌ์ฉ์ ์ ์ ๋น๋ ์์คํ ๋ฐ/๋๋ ๋ง์ ๊ธฐ๋ฅ์ ์๋ '์์ ํธ์ถ'์ ๋๋ค. CMake๋ ๊ฐ์น๊ฐ ์๋ ์๋ ์ ๋ง ํ์ค์ด ๋์์ต๋๋ค.
IDE์์ meson์ ์ฌ์ฉํ๊ธฐ ์ํ ์ ์ฉํ ๋๊ตฌ:
https://github.com/prozum/meson-cmake-wrapper
๊ทธ๊ฒ์ IDE๊ฐ CMake๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ๊ฒ ํ์ง๋ง ์ค์ ๋ก๋ ๋ด๋ถ์ ์ผ๋ก ์ค๊ฐ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ช ๊ฐ์ง ๋ฐฐ๊ฒฝ: ์ ๋ (10?) ๋ ๋์ CMake์ ์ด๋ ฌํ ์ง์ง์์์ง๋ง ์๋ ์ ๋์ meson๊ณผ ์ฌ๋์ ๋น ์ก์ต๋๋ค. Meson์ CMake์ ์ฑ๊ฐ์ ๋ง์ ๋ถ๋ถ์ ์์ /๋ฐฉ์งํ๋ฉด์ CMake์ ์ ์ฉํ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ ค๋ ์๋๋ก ์์ฑ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด๊ฐ ํ์ฌ ํ๋ก์ ํธ์์ meson์ ์ฑํํ๋ ๋ฐ ์ง๋ฉดํ๊ณ ์๋ ํ ๊ฐ์ง ์ฅ์ ๋ฌผ์ IDE ์ง์์ ๋๋ค. ๋ฐฉ๊ธ ์์ ๋๊ตฌ๋ฅผ ๋ฐ๊ฒฌํ์ผ๋ฏ๋ก ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋ชจ๋ ๋น๋ ์์คํ ์๋ ์ฃผ์ ๊ฒฐํจ์ด ์์ต๋๋ค. ๊ทธ ์ด์์ ๊ธฐ์ ์ ์ธ ๊ด์ ์์ ๋ณผ ๋ scons, autotools, cmake, meson ๋๋ make vs ninja ์ข ๊ต๊ฐ ๋ฌด์์ด๋ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๋น๋ ์์คํ ๋ณ๊ฒฝ ๋ฒ๊ทธ๋ฅผ ์ด ๋ฒ๊ทธ์ ๋ณต์ ๋ก ๋ซ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
<reduz> iFire: no, you did not, all you did was build it but did not port any of the dozens of custom scripts that generate code
<iFire> reduz: the other person worked on the little python script generation on her branch
<iFire> so they directly imported the python env
<iFire> it's workable
<reduz> iFire: that is what everyone said that attempted it, and failed :P
<reduz> there are too many things in there
reduz๊ฐ ์๋ชป๋ @slurps-mad-rips :).
์์ง ์ธ๊ธ๋์ง ์์ ๋ฐฉ์ 800lb ๊ณ ๋ฆด๋ผ. ๋ช ์ฑ์ ๋ํ Godot์ ์ฃผ์ฅ ์ค ํ๋๋ ํ๋ซํผ ๊ฐ ํธํ์ฑ์ ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋น๋ ์์คํ ์ ๋ฌด์์ด๋ ์ง Godot๊ฐ ๋ชฉํ๋ก ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ํ ์คํธ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌํ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฐฐํ์ ์๋ ์ฌ๋์ ์ง์๋๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ ์คํธํ๊ฑฐ๋ ์ต์ํ ๊ทธ๋ ๊ฒ ํ๋ ํ์ ์ผ์์ด์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๋ Godot ์ฒ ํ๊ณผ ์ผ๋ฐ์ ์ผ๋ก ๋์ ์๊ฐ์ ๋ฐ๋๋๋ ๊ทธ๋ฌํ ์์ง์์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
@lazybullfrog ๋ฐ์คํฌํ๊ณผ ์ฌ๋ฌ ๋ชจ๋ฐ์ผ ์ฅ์น์ฉ์ผ๋ก ์ฝ 5๊ฐ์ ๊ฐ๋ณ ์ปดํจํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. cmake์ ๋ํ ๋ด ํฌํธ์ ์ผ๋ถ๋ ํ์ฌ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ cmake ๋๊ตฌ ์ฒด์ธ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
@slurps-mad-rips ํ์ด์ฟ ์ค ํ๋์ธ๊ฐ์? ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ธฐ๊บผ์ด ํ ์คํธ๋ฅผ ๋๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์.
cmake์ ๋ํ ๋ด ํฌํธ์ ์ผ๋ถ๋ ํ์ฌ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ cmake ๋๊ตฌ ์ฒด์ธ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
ํ๋ซํผ์ฉ cmake ๋๊ตฌ ๋ชจ์์ด ํ์ํ ๊ฒฝ์ฐ https://github.com/ruslo/polly์ ๋ฏธ๋ฆฌ ๋น๋๋ ๋๊ตฌ ๋ชจ์์ด ์์ ์ ์์ผ๋ฉฐ ์๋ ๊ฒฝ์ฐ PRํด์ผ ํฉ๋๋ค. :-)
@slurps-mad-rips ์ด๋ป๊ฒ ๋ ๊ฑด๊ฐ์? 1์ 14์ผ์ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. Windows์์ ์ปดํ์ผ์ ์๋ํ์ง๋ง pkgconfig๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
@fire life๋ ๋ด ๋ฐฉ์๋๋ก ์ปค๋ธ๋ณผ ๋ช ๊ฐ๋ฅผ ๋์ง๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ๋ด๊ฐ ์ฒ๋ฆฌํด์ผ ํ์ต๋๋ค. ๋ถํํ๋ ๊ฐ์ธ์ ์ธ ๋ฌผ๊ฑด. ๋๋ ์์ ์ ์ง์คํ๊ณ Godot์ ๋ณต์ฌ๋๋ ์์ ์ ์์ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์๋ IXM ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ฌด๋ฆฌํ์ต๋๋ค. ์ด ์ข๊ฒ๋ ์ ๋ ์ผ์ฃผ์ผ ํ์ ํด๊ฐ๋ฅผ ๊ฐ๋ฏ๋ก(์ด๋ฒ ์ฃผ๋ง์ ์ด๋ฆฌ๋ WG21 ISO ํ์๋ฅผ ์ํด Kona๋ก ํฅํฉ๋๋ค) ์ด์ ๋ํด ์์ ํ ์ฌ๊ฐ ์๊ฐ์ด ์๊ณ (์ํ๋ฉด!) macOS, Linux ๋ฐ Windows ๊ณงโข์ฉ์ผ๋ก ์๋ํ๋ ๋น๋์ ๋๋ค. Android์ iOS, FreeBSD์ Haiku(๋ฏธ์ํฉ๋๋ค @lazybullfrog , ์ผ์ฐ/์์ฃผ ํ ์คํธํ๋ ๊ฒ์ ํ์ํ์ง๋ง)๋ ๊ทธ ๋ค์์ผ๋ก ์ ์ ๋ค์ ์ฐ์ ์์๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ง๊ธ๊น์ง ์์ /์ฐจ๋จ๊ธฐ์ ๊ฐ์ฅ ํฐ ๋ฉ์ด๋ฆฌ๋ Python ์คํฌ๋ฆฝํธ๋ฅผ Scons์ ๋ถ๋ฆฌ๋๊ณ ํ๋ก์ธ์ค์ฒ๋ผ ์คํ๋๋ "์ค์น ๊ฐ๋ฅํ" ๋๊ตฌ๋ก ์ถ์ถํ๋ ๊ฒ์ ๋๋ค. ์์กด์ฑ, ์ค์ ๋ฑ์ ์ค์ ํ์ ์ ๋น๊ตํ๊ธฐ ๋ ์ฌ์ ์ต๋๋ค.
@slurps-mad-rips, ์ธ์์ ๋์๊ฒ๋ ๋ช ๊ฐ์ ์ปค๋ธ ๋ณผ์ ๋์ก์ต๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ์ผ๊ตฌ ํ์ ์์ํด์ผ ํ ๊ฒ์ ๋๋ค. ๐
๋คํ์ค๋ฝ๊ฒ๋ ๋ด๊ฐ ๋ง์ง๋ง์ผ๋ก ์ธ๊ธํ ์ดํ๋ก ๊ทธ ์ปค๋ธ ๋ณผ ์ค ํ๋๋ Haiku ๋ฐ FreeBSD๊ฐ ์ค์น๋ 32GB ๋จ์ด ์๋ 8์ฝ์ด Xeon์ด์์ต๋๋ค. ์๋ง๋ ๊ณง ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ํ ์คํธํ๋ ๋ฐ ๋์์ด ๋ ์๊ฐ์ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด ๋ ํ๋ซํผ์ด ๋ชจ๋ ์ฃผ๋ชฉ์ ๋ฐ๊ณ ์๋ค๋ ์ฌ์ค์ด ์ ๋ง ๊ธฐ์ฉ๋๋ค. ๊ณง ํ ์คํธ๋ฅผ ๊ธฐ๋ํ์ญ์์ค.
์ฌ๋ฌ ๋น๋ ์์คํ ์ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ์ ์ง์๋๋ ๊ณต์ ๋น๋ ์์คํ ๊ณผ "์์๋ธ" ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณต๋๋ ๋ค๋ฅธ ์์คํ ์ผ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๊ด๊ณ์์ด ์์ ์ ๋น๋ ์์คํ ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ฏ๋ก ์์ ์ ํ ๊ณณ์ผ๋ก ํ๋งํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ํฉ์ด ๊ทธ๋ ๊ฒ ๋๋ฉด Bazel ํฌํธ์ ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค.
์ฌ๋ฌ ๋น๋ ์์คํ ์ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ์ ์ง์๋๋ ๊ณต์ ๋น๋ ์์คํ ๊ณผ "์์๋ธ" ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณต๋๋ ๋ค๋ฅธ ์์คํ ์ผ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๊ด๊ณ์์ด ์์ ์ ๋น๋ ์์คํ ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ฏ๋ก ์์ ์ ํ ๊ณณ์ผ๋ก ํ๋งํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
Linux ํจํค์ ๋ก์ ์ ๋ ๋ค์ํ ๋น๋ ์์คํ ์ ์ฌ์ฉํ๋ ์๋ฐฑ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๋ณด์์ต๋๋ค. ์ฌ๋ฌ ๋น๋ ์์คํ ์ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง๋ฅผ ๋ณด์์ต๋๋ค. ๋๋ ์์ ํ ์๋ง์ด ์๋ ๊ณณ์ ๋ณธ ์ ์ด ์์ต๋๋ค. ํนํ ๋์ฒด ๋น๋ ์์คํ ์ด ์ฒ์์ผ๋ก "CMake๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ ๋ง ๋ฉ์ง" ๊ธฐ์ฌ์๊ฐ ๊ธฐ์ฌํ ํ ํ๋ก์ ํธ์์ ์ฌ๋ผ์ก๊ณ ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ๊ท์ฐฎ๊ฒํ์ง ์์์ ๋.
์ด ์ฌ๋ฌ buildsystems ์ง์์ ์ ํ ๊ฐ์น๊ฐ ์๋ค, ๋๋ ๊ทธ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์๋ PR์ ๋ณํฉํ์ง ์์ต๋๋ค. ์ ๋ ๋น๋ ์์คํ ์ ์ฃผ์ ๋ฉ์ธํ ์ด๋ ์ค ํ ๋ช ์ด๋ฉฐ, ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ๋๋ง๋ค ๋์์ ์ ์งํด์ผ ํ๋ ๋ถ๋ด์ ์ง๊ณ ์ถ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํ์ฌ ๋ชจ๋์๊ฒ ์๋ํ๊ณ ์ ์ง์๋๋ฉฐ ๋ณ๊ฒฝํ ์๋๊ฐ ์๋ ๋น๋ ์์คํ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๊ตฐ๊ฐ ๋ค๋ฅธ ์ต์ ์ ์ ๋ง๋ก ์กฐ์ฌํ๊ธฐ๋ฅผ ์ํ๊ณ , ์ต์ข ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ์ฌ๋์๊ฒ ํจ๊ณผ๊ฐ ์๊ณ , ์ ์ง์๋๊ณ ํฐ ๋จ์ ์์ด ๋ถ๊ฐ๊ฐ์น๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ _์ ๋ง__ ๋ค๋ฅธ ์ต์ ์ ์กฐ์ฌํ๊ธฐ๋ฅผ ์ํ๊ณ , ์ต์ข ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ์ฌ๋์๊ฒ ํจ๊ณผ๊ฐ ์๊ณ , ์ ์ง์๋๊ณ ํฐ ๋จ์ ์์ด ๋ถ๊ฐ๊ฐ์น๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
๊ทธ๊ฒ์ด ๋ด๊ฐ CMake ํฌํธ๋ก ํด์จ ์ผ์ ๋๋ค. ํ์ฌ scons์์ no-op ๋๋ ๋จ์ผ ํ์ผ ๋ณ๊ฒฝ์ ํ์ฌ ์ปดํจํฐ(64GB RAM, ์ ์ฌํ ํ๋ก์ธ์ ๋ฑ์ด ์์)์์ 10์ด ์ด์ ๊ฑธ๋ฆฝ๋๋ค. ninja + cmake๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ๊ตฌ์ฑ + ์์ฑ ํ๋ก์ธ์ค๊ฐ ๋ ์ ์ ์๊ฐ์ด ์์๋๊ณ ๋น๋๋ ๋ฌด์๋ ๋น๋์์ 0.2์ด ์ด๋ด์ ์๋ฃ๋ฉ๋๋ค(ํ๋ก์ธ์ค ์์์ ๋น์ฉ์ด ๋ง์ด ๋๋ Windows์์). ๋ํ mozilla์ sccache ๋๊ตฌ๊ฐ ์ค์น๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ codegen ๋ถ๋ถ์ ํธ์งํ๊ฑฐ๋ ์ฒ์๋ถํฐ ์ฌ์์ฑ๋ ๋น๋๋ฅผ ์คํํ์ฌ ๋ด ๋ก์ปฌ ํ๊ฒฝ์ ์์กดํ๋ ๊ฒ์ด ์๋์ง ํ์ธํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ์ต๋๋ค.
๋๋ถ๋ถ์ ์๊ฐ์ ์ฝ๋ ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒด์ ์ผ๋ก ์คํํ ์ ์๋ python ์คํฌ๋ฆฝํธ๋ก ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค. ๊ทธ๊ฒ์ด Godot์ ๋ณํฉ๋ ์ ์ผํ ๊ฒ์ด๋ผ๋ฉด, ์ด๊ฒ์ ์๋นํ ์๊ฐ์ด ์์ ํ ๋ญ๋น๋์ง ์์์ ๊ฒ์
๋๋ค. ๋ํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ์๋ ์ฐฝ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ฌ ์กด์ฌํ๋ run_in_subprocess
ํดํน์ ํด๊ฒฐํฉ๋๋ค.
๋ฐฉ๊ธ ์ฌํ์์ ๋์์์ ์ฝ๊ฐ์ ์์
์ ์๋ฃํ ์ ์์์ต๋๋ค. ์ง๊ธ ๋น์ฅ์ ์๋ scons ์คํ์์ ๋ช ๊ฐ์ ํ์ผ์ ๋ณต์ฌํด์ผ ํ์ง๋ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ฑ๋ ์์ค๋ฅผ ์กฐ๊ธ์ฉ ์๋ผ๋ด๊ณ ์์ต๋๋ค. license.gen.h
๋ฐ method_bind.inc
ํค๋๊ฐ ํ์ฌ ๊ฐ์ฅ ํฐ ๋ชฉํ์ด์ง๋ง ์์ฐจ๋ก ์ธํ ํผ๋ก์ ์์
์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉฐ์น ์ด ์์๋ฉ๋๋ค.
(๋ํ ๊ทธ๋ ์ด ์งํ ์ํฉ์ ์ ์ ๊ด์ฌ์ด ์์๊ธฐ ๋๋ฌธ์
๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด Meson์ Windows์์ Android๋ฅผ ๋น๋ํ ๋ ์์ ํ ์๋ง์ด ๋์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(libepoxy) ์ค ํ๋๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ด ๊ตฌ์ฒด์ ์ธ ์ปดํ์ผ๋ฌ์ ๋๋ฌด ๋ง์ด ๋ฌถ์ฌ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์ํ๋ ๊ฒ์ ๋น๋ ๋ช ๋ น๊ณผ ๋ณ๋๋ก ํ๋ก์ ํธ ํ์ผ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ์์ฑํ ์ ์๋ ๋น๋ ์์คํ ์ ๋๋ค.
ํ์ผ์ ๋ํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ์ ๋ถ๊ธฐ๋ฅผ ์ฒดํฌ์์ํ ๋๋ง๋ค ๋ช ๋ น์ค์์ Scons๋ฅผ ์คํํ์ฌ vsproj ํ์ผ์ ์ฌ์์ฑํด์ผ ํ๋ฏ๋ก ์ด์จ๋ ์ ์ฒด ๋น๋๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ด๊ฐ ๋ณธ Scons์๋ ์ด๋ค ์ข ๋ฅ์ ํ๋ก์ ํธ ์์ฑ ๋จ๊ณ๋ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ํ clang-tools์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฆ์ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ์ง์ํ์ง ์๋ ์ด์ ์ ๋๋ค.
ํ์ฌ, Windows์์ Godot๋ฅผ ์ฝ๋ฉํ๋ ์ ์ผํ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ (IDE-wise)์ Visual Studio๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ์ญ์์ค.
Scons๋ ํ๋ฅญํ๊ณ ๋ชจ๋ ๊ฒ์ด์ง๋ง 12์ฝ์ด ์ฐ๋ ๋๋ฆฌํผ์ 128GB ๋จ์ด ์๊ณ ํ ์ค ๋ณ๊ฒฝ์ ์ปดํ์ผํ๊ธฐ ์ํด Windows์์ 12์ด ์ด์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ(๋๋ถ๋ถ Scons๊ฐ ์๊ฐํ๋ ๊ฒ์ ๋๋ค), ์ฝ๊ฐ ์ง์ฆ์ด ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ Scons์ ์ค์ ๋จ์ (๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ฒ์์ ๊ฒ์ผ๋ฅธ ๊ฒ์ผ ์ ์์)์ ๊ฐ๋ณ cpp ํ์ผ์ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์ง ์๊ณ ๊ฐ๋ณ cpp ํ์ผ์ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ ์์ฐ์ฑ์ ํฌ๊ฒ ๋์ด๊ณ ์จ์ ํ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋ผ์ธ ๋ณ๊ฒฝ๋ฟ๋ง ์๋๋ผ ๋น๋ํ ๊ฒ์ด ์๋์ง ํ์ ํ๋ ๋ฐ๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค...
git-bash์์ ์คํ:
$ time scons -j24 num_jobs=24 vsproj=true platform=windows
scons: Reading SConscript files ...
Configuring for Windows: target=debug, bits=default
Found MSVC version 14.2, arch amd64, bits=64
YASM is necessary for WebM SIMD optimizations.
WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!
Checking for C header file mntent.h... no
scons: done reading SConscript files.
scons: Building targets ...
[Initial build] progress_finish(["progress_finish"], [])
[Initial build] scons: done building targets.
real 0m16.082s
user 0m0.000s
sys 0m0.030s
๋จ์ผ ๋์ ํ์ผ๋ง ๋น๋ํ๋ ค๋ฉด ๋ช ๋ น์ค์์ ์ง์ ํ์ญ์์ค.
scons -j24 num_jobs=24 vsproj=true platform=windows <path to targetfile>/targetfile.obj
CMake์ ์ต์ ๋ฒ์ ์ ์ด์ ์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ก ์ธ๊ธํ ๋๋ฝ๋ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ์ถ๊ฐํ๊ณ ์๋ค๊ณ ๋ง๋ถ์ด๊ณ ์ถ์์ต๋๋ค.
Unity ๋น๋: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋: https://cmake.org/cmake/help/latest/command/target_precompile_headers.html
@Nosliwnayr ๋ ๋ค ์๋ ๋์ ์ ๋์จ์ ์ํด ์ง์๋์ด ์์ผ๋ฉฐ ์ ํ ์คํธ๋์์ผ๋ฉฐ ์ด์ ํฌํจ๋๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ์์ฃผ ์ค๋ซ๋์ CMake์์ ๋ ๋ค ํ ์ ์์๊ธฐ ๋๋ฌธ์ CMake๋ฅผ ์ฌ์ฉํ์ง ์์ ์ด์ ๊ฐ ์์์ต๋๋ค.
@bdbaddog
์ดํดํ ์ ์์ต๋๋ค. ๋ชจ๋ ๋จ์ผ ํ์ผ์ ์๋์ผ๋ก ์ง์ ํด์ผ ํฉ๋๊น? ๊ทธ .obj๋ ๋ฌด์์ ํฉ๋๊น?
์ ์ฒด ํ๋ก์ ํธ์ ์ด๋ป๊ฒ ์ ์ฉํฉ๋๊น? ๊ฐ๋ณ ํ์ผ์ ์๋์ผ๋ก ๋ค์ ์ปดํ์ผํฉ๋๊น?
๋๋ ์ปดํ์ผ ์๊ฐ์ด ๋ ์ต์ ํ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋ฌด ํธ๋ฆญ ์์ด ๊ฑฐ์ ์ฆ์ C++ ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์ ๋ฌผ์ด ๋ ๊ฒ์ ๋๋ค - Godot๊ฐ ์ผ๋ง๋ ๋นจ๋ฆฌ ์ปดํ์ผ๋๋์ง ํ์ธํ ํ, ์ ๋ ์ ๋ง ์ธ๋ฆฌ์ผ ์์ง 4๋ก ๋์๊ฐ๊ธฐ ์ํด ๊ณ ๊ตฐ๋ถํฌํ๊ณ ์์ต๋๋ค(์ปดํ์ผ , 45๋ถ์ด ๊ฑธ๋ ธ์ง ๋ง ์ด์ ์์ง์ด ์ด๋ป๊ฒ ๋ ๋ ๋ถํ์ด ์ค๋ฅด๊ณ ์ต๋ 60 ๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ๋ฏธ์น ๋ฏ์ด์)
๋ด ๋ง์ Godot๊ฐ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ปดํ์ผํ ์ ์๋ ์ ์ฌ๋ ฅ์ด ์๋ค๊ณ ์๊ฐํ๊ณ ๋น๋ ์์คํ ์ ์ง์ ๊ต์ฒดํ ๊ฒ์ด์ง๋ง ๊ฒฝํ์ด 0๊ฐ์ด๋ฏ๋ก ๋ง ๊ทธ๋๋ก ๋ฌด์์ ํด์ผํ ์ง ์ ํ ๋ชจ๋ฆ ๋๋ค.
@Nosliwnayr
๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋๋ฅผ ํผํ ์ ์์ต๋๊น? ๋๋ ๊ทธ๊ฒ๋ค์ด ์์ ํ ์ฐ๋ ๊ธฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋จ์ํ๊ฒ ์ ์งํ์ญ์์ค.
๊ทธ๋ค์ ๋ํ ๊ณต์ ํ๋ก์ ํธ๋ฅผ ํจ์ฌ ๋ ์ฑ๊ฐ์๊ฒ ๋ง๋ค๊ณ ๋ด ๋ง์ ์์ ๋๋ฌด ๋ง์ ๋จ์ ์ด ์๋ ๋์๋ ๋ถํ๋ ค์ง - ํ์ง๋ง ์ด๋ด, ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ๋๋ ๋ฉ์ง์ง๋ง ๋์๊ฒ๋ ๊ทธ๊ฒ๋ค์ด ๋๋ฌ์ด ์์์์ฒ๋ผ ๋ณด์ ๋๋ค. ์ง์ ํ ์ต์ ํ๋ฅผ ์ํด
์ธ๋ฆฌ์ผ ์์ง 4๋ฅผ ์ฌ์ฉํ ํ, 20GB์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํ์๋ฆฌ์ ์ง์ณค์ต๋๋ค. ๋๋ ๊ทธ๊ฒ๋ค์ด ๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ ๋ฉ์ฒญํ ์์คํ ์ด ์์ด์ผ ํฉ๋๋ค(์ธ๋ฆฌ์ผ ์์ง 4, ์ต๋ 60 - ๋๋ฅผ ์ํด 80GB, ๋ฉ์ง์ง ์์)
Godot๊ฐ ๊ทธ ๋ฐฉํฅ์ผ๋ก ํฅํ๋ค๋ฉด, ๋๋ ๊ฐ๋ฐ์๋ค์ด ๋น์ด๋จน์ ์ ์ ์ ์์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ ๋๋ค.
์ ์ฅ, ์ ์ฅ, ์ฐจ๋ผ๋ฆฌ ๊ทธ๋ค์ด scons๋ฅผ ๊ณ ์ํ๋๋กํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๊ฒ์ด ์ธ๋ฆฌ์ผ ์์ง 4์ ๊ด๊ธฐ์ ๊ณต์ ํผํ๋ค๋ฉด, ๋ ๋๋ํ ์ ๊ทผ ๋ฐฉ์์ scons๋ฅผ ์์ ํ ๊ต์ฒดํ๋ ๋์ scons๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์์ ํ ์๋ก์ด ๋ถ๋ฌ์ง ์๋ฉ์ด ์ปดํ์ผ ์์คํ , ํ์ฌ ์์คํ ์ด ์๋ํ ๋... ๋ค์๊ฐ
์๋ก์ด ์์คํ ์ ๋์ ํ๋ ๋ฐ ํ์ํ ์ ์ ์ ๋ ธ๋ ฅ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๊ฐ์ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ก์ด ์ปดํ์ผ๋ฌ๋ ๊ฒฐ๊ตญ ๋ช ๋ฌ ๋์ ๊ธฐ๋ฅ์ ์ผ๋ก ์์๋ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์๋ฃ๋๋ฉด ์ง์ฅ์ ๋ํด ๋ถํํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ์ค์ํ ์์ง ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ํด์ผํฉ๋๋ค. ์ผ๋จ ๋ณ๊ฒฝ๋๋ฉด ๋๋๋ฆด ์ ์์ต๋๋ค.
@RaTcHeT302 - ์ง์ ๋ ๋ช ๋ น์ค์ ๋จ์ผ ๋์(์ด ๊ฒฝ์ฐ ๊ฐ์ฒด ํ์ผ)(๋ฌผ๋ก ์ข ์๋ ํ์ผ)๋ง ๋ช ์์ ์ผ๋ก ์ปดํ์ผํ๋ ค๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ค์ ๋ก SCons์ ๊ด๋ จ๋ ๋ฌธ์ ์ ๋ํด ๋ถํํ๋ ๋ชจ๋ ์ฌ๋๋ค์ด ๋ณต์กํ ๋น๋ ์์คํ ์ ๋ ์๋กญ๊ณ ๋น๋๋ ๋ค๋ฅธ ์์คํ ์ผ๋ก ์ ํํ๋ ๊ฒ์ ์ ์ํ๊ธฐ๋ณด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ค๋ฉด .. ๊ธ์, ๊ทธ๋ฌํ ๋ง์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
@bdbaddog Scons ๋ ์ค๊ฐ ๋จ๊ณ ๋น๋ ํ์ผ์ ์์ฑํ์ง ์์ต๋๋ค. ์ปดํ์ผ๊ณผ ๋์ผํ ๋จ๊ณ์์ "ํ๋ก์ ํธ ์ข ์์ฑ" ๋จ๊ณ๋ฅผ ์ํํ๋ฉฐ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
MSVC, ninja-build, make, llvm ๋ฑ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋งค๋ฒ ํ๋ก์ ํธ ํ์ผ์ ์์ฑํ๋๋ก CMake์ ์ง์ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
git ๋ถ๊ธฐ๋ฅผ ์ ํํ๋ฉด ์ ์ ํ .vsproj ๋ฐ .sln ํ์ผ์ ์ฌ์์ฑํ๊ธฐ ์ํด scons ๋ช ๋ น์ค ๋น๋๋ฅผ ์ํํ์ง ์๊ณ Visual Studio๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๊ณผ๊ฑฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ํญ์ ๋น๋ ๋ถ๊ธฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ์ค๊ฐ ํ์ผ์ ๋น๋์ฉ์ด ์๋๋ผ ์ ์ ๋ถ์๊ธฐ ๋ฐ ๊ธฐํ ํ๋ก์ ํธ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
cmake๊ฐ ์๋ฒฝํ์ง ์๋ค๋ ๋ฐ ๋์ํ๊ณ (์ ๋ ๊ทธ๋ ๊ฒ ์ข์ํ์ง ์์ต๋๋ค) ํ์ด์ฌ์ ์ ์ฐ์ฑ์ ์ ํธํ์ง๋ง cmake๋ ํ ์ด๋ธ์ ๋ชจ๋ ๋น๋ ๋๊ตฌ์ ๋ํ ์ต๊ณ ์ ํตํฉ ๋ฐ ์ง์์ ์ ๊ณตํฉ๋๋ค.
ํฌํฌ๋ฅผ CMake๋ก ๋ณํํ ๋ ๋๋ถ๋ถ์ ๋ณต์ก์ฑ์ ์ฝ๋ ์์ฑ ํ์ผ์ ์์์ต๋๋ค. ๋น๋๊ฐ ๋ณต์กํ๋ค๋ ์๊ฐ์ ์ค๋ฅ์ ๋๋ค. ๋น๋๋ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ scons๊ฐ ํ์ํ์ง ์์ต๋๋ค. scons๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํฉ๋๋ค.
์ฆ, ๋ด๊ฐ ์์ ์ ์ค๋จํ ์ด์ ๋ 2019๋ (Github ๋ชจ์์์) GDC์์ ์์ ๊ฐ๋ฐ์๋ฅผ ๋ง๋ฌ๊ณ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์ ํํ ์๊ฐ์ด ์ ํ ์๋ค๊ณ ๋งํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์ ์ผ๋ก Linux์์ ๋น๋ํ๊ณ ์ค์ ๋ก ๋ด๊ฐ ๋ณธ ๋ฐ๋ก๋ Apple์์ ํฌ๋ก์ค ์ปดํ์ผ์ ์ํ ๋น๋ ๋๊ตฌ๋ฅผ ์ค์นํ๊ธฐ ์ํด ์น์ธํด์ผ ํ๋ EULA๋ฅผ ์๋ฐํ๊ณ ์์ต๋๋ค.
๋ด๋น์์ ์ฌ๊ณ ๋ฐฉ์์ "๋ชฉ์ ์ ์๋จ์ ์ ๋นํํ๋ค"๊ณ ๋น๋๋ฅผ ์ํํธ์จ์ด๋ก ์ทจ๊ธํ๋ ๋ฐ์๋ ์ ํ ๊ด์ฌ์ด ์๋ ๊ฒ ๊ฐ๊ณ , ๋์ Godot๋ ๋น๋๋ฅผ ์์ฑํ๋ ์ผ๋ จ์ ์คํฌ๋ฆฝํธ๋ก ์ทจ๊ธํฉ๋๋ค.
๋๋ ์ฝ๋ ์์ฑ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ Godot์ ๊ธฐ์ฌํ์ง ์์ ๊ฒ์ด๋ฉฐ(๋ ์ฝ๊ธฐ ์ฝ๊ณ ๋น ๋ฆ์๋ ๋ถ๊ตฌํ๊ณ ) ์ด ์์ง์ ์์ ํ ํฌ๊ธฐํ๊ณ ๋ด ์ถ์ ๊ณ์ ์ด์ด๊ฐ์ต๋๋ค. ์์งํ ๋งํ๋ฉด ๋ ํ๋ณตํด์. ์์ง์๋ ์ด๋ฏธ ์๋นํ ๊ธฐ์ ๋ถ์ฑ๊ฐ ์์ผ๋ฉฐ ํนํ C++ ํ์ค ์์ํ๊ฐ ํด๋ง ๊ธฐ์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฝ 3๋ ๋ง์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ผ๋ก ๋ณด๊ณ ์์ต๋๋ค. ์ด๋ ์ ๋๋ ๊ธฐ์ ๋ณด๊ณ ์์ผ ๋ฟ์ด๋ฏ๋ก ์ผ๋ถ ์ฌ๋๋ค์ ์ด์ ๋ํด ์๊ฒฌ์ ๋ฌ๋ฆฌํ ๊ฒ์ ๋๋ค.)
๋ถ๋๋ฝ๊ธฐ๋ ํ๋ค. ๋ด CMake ๋น๋๋ ์๋ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ณ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ง์ ์ ์ ๋ถ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์์์ง๋ง ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ๊ฑฐ๋ ์์ ์ ์๋ํ๊ธฐ ์ํด GDC์์ ๊ฐ๋ฐ์์ ์ด ๋ฌธ์ ์ ๋ํด ๋ ผ์ํ๋ ๋ฐ ๋๋ฌด ์ง์ณค์ต๋๋ค. ๊ทธ๋ค์. ๋ด ์๋์ง์ ์ ์ ๊ฑด๊ฐ์ ๋ค๋ฅธ ๊ณณ์์ ๋ ์ ์๋น๋ฉ๋๋ค.
scons๊ฐ ๋ค๊ฐ์ค๋ C++20 ๋ชจ๋ ๋์์ธ์ ์ฒ๋ฆฌํ ์ ์๋ ์ธ์์ ์์ต๋๋ค. ๋ด๊ฐ ์ผ๋ง๋ ๋ง์ ๋๊ตฌ๋ฅผ ๋ง๊ฐ๋จ๋ฆด ๊ฒ์ธ์ง๋ฅผ ์ธ์น ๊ฒ๋ฟ์ ๋๋ค. ๊ทธ๊ฒ์ ๋ํ ์ข ์์ฑ ์ถ์ ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ์ฌ์ ์ค์บ ๋จ๊ณ๊ฐ ํ์ํ๋ฏ๋ก ์ข ์์ฑ ์ถ์ ์ด ๋์ฑ ๋๋ ค์ง๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ฌ๋๋ค์๊ฒ ์ฌ์ํ ๋ณ๊ฒฝ๋ง ํ์ฉํ๋ ๋๊ตฌ๋ฅผ ๊ฐ์ ํ๋ ค๊ณ ํ์ง ๋ง๋ผ๊ณ ์ ์ํฉ๋๋ค. Scons๋ ์ฌ๊ธฐ ์ฌ๋๋ค์ด ์ถ๊ตฌํ๋ ๊ฐ์ ์ฌํญ์ ์ป๊ธฐ ์ํด ์ฒ์๋ถํฐ ์์ ํ ๋ค์ ์์ฑํ๊ณ ๋ง์ ์์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์ํฉ๋๋ค.
๋น๋ ์์คํ ๋ณ๊ฒฝ์ ๋ํ ๋ ผ์๊ฐ GDC 2019์์ ๋ต๋ณ๋์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ง๋ง ๋ฆฌ๋๋ ์ด ๋ฌธ์ ์ ๋ํด ์ธ๊ธํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ ๊ฐ์น์กฐ์ฐจ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ์.
๊ธฐ์กด ๋น๋ ์์คํ ์ด 100% ํ๋ฌ๊ทธ ์ค ํ๋ ์ด ๋ฐฉ์์ผ๋ก ๋ณํ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ ํํ์ง ์์ ์ด์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
Linux ์์๋ง ๋น๋
๊ฒ์ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉ์๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํด ๋น๋ ์์คํ ์ ๋ณ๊ฒฝํ๋ ๋ฐ ์ ๊ฒฝ์ ๋ง์ด ์ผ๋ค๋ ์ธ์์ ๋ฐ๊ณ ์ถ์ต๋๋ค.
๋ด๊ฐ ์ธ๋ฆฌ์ผ ์์ง์ ๋ ๋ ์ด์ ์ค ํ๋๋ ์์ง์ด ์ฃผ๋ก ๋ธ๋ฃจํ๋ฆฐํธ/ํ๋ก ํธ ์๋ ๊ฒ์ ์ ์์ ์ํด ๋ง์ถคํ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. C++ ๋ชจ๋์์ ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ์ Unreal์์ ๋งค์ฐ ๊ณ ํต์ค๋ฝ๊ณ ๋ณต์กํฉ๋๋ค.
์ง๊ธ๊น์ง Godot์์๋ ๊ฝค ์พ์ ํ์ต๋๋ค. C++ ๋น๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋๋ ๊ฒ์ ์ปค๋ฎค๋ํฐ์ ํฐ ์ฅ์ ์ด ๋ ๊ฒ์ ๋๋ค.
IIRC์์๋ Wine์ ์ฌ์ฉํ์ฌ MSVC ๋น๋ ๋๊ตฌ๋ฅผ ์คํํฉ๋๋ค. ์ฌ์ ํ ๋น์ ์ ์์ ์ ๋ฐ๊พธ์ง ์๊ณ ๋์ํฉ๋๋ค.
Linux ์์๋ง ๋น๋
Godot๋ ํญ์ Linux๋ฟ๋ง ์๋๋ผ ๋ง์ ํ๋ซํผ์์ ๋น๋ ๊ฐ๋ฅํ์ต๋๋ค...
IIRC์์๋ Wine์ ์ฌ์ฉํ์ฌ MSVC ๋น๋ ๋๊ตฌ๋ฅผ ์คํํฉ๋๋ค. ์ฌ์ ํ ๋น์ ์ ์์ ์ ๋ฐ๊พธ์ง ์๊ณ ๋์ํฉ๋๋ค.
๊ณต์ Windows ๋น๋๋ MinGW๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ฉ๋๋ค. Linux์์ MSVC๋ฅผ ์คํํ๊ธฐ ์ํด WINE์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
@marstaik - MSVS ํ๋ก์ ํธ ํ์ผ์ ์์ฑํ๊ธฐ ์ํด ๋น๋๋ฅผ ์ ํํ๊ณ scons๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ํด๋น ํ์ผ์ ๋์์ผ๋ก ์ง์ ํ ์ ์์ด์ผ ํ๋ฉฐ ์ ์ฒด ๋น๋๋ฅผ ์ํํ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ์๋:
scons <path to created MSVS project file>/VSPROJECTFILENAME (replace with actual paths and file name which are generated)
SCons๋ ์์ ํ ๋น๋๋ฅผ ์ํํ์ง ์๊ณ ๋ ์ด ์์
์ ์ํํ ์ ์์ด์ผ ํ๋ฉฐ ๋จผ์ ์ ๋ฆฌ๋ฅผ ์ํํ ํ์ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ํํด์ผ ํฉ๋๋ค.
(BTW. ์ ๋ SCons ํ๋ก์ ํธ ๊ด๋ฆฌ์์
๋๋ค)
@bdbaddog ํด๋น ๋ช ๋ น์ vsproj=True๋ฅผ ์ถ๊ฐํด์ผ ํ์ง๋ง ์๋ํ ๊ฒ ๊ฐ์ต๋๋ค.
Godot src์์:
scons -j24 godot.vxcproj num_jobs=x vsproj=true
ํธ์ง: ์ด๋ค ์ด์ ๋ก -j ํ๋๊ทธ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค...
@bdbaddog ํด๋น ๋ช ๋ น์ vsproj=True๋ฅผ ์ถ๊ฐํด์ผ ํ์ง๋ง ์๋ํ ๊ฒ ๊ฐ์ต๋๋ค.
Godot src์์:
scons -j24 godot.vxcproj num_jobs=x vsproj=true
ํธ์ง: ์ด๋ค ์ด์ ๋ก -j ํ๋๊ทธ๋ ์ถ๊ฐํด์ผ ํฉ๋๋ค...
์ด๋ฌํ ํ๋๊ทธ์ ๋๋ถ๋ถ์ ๊ธฐ๋ณธ SCons๊ฐ ์๋์ง๋ง ๋ค์ํ ํจํค์ง(์ด ๊ฒฝ์ฐ Godot)๊ฐ SCons๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์์คํ
์ ๊ตฌํํ๋ ๋ฐฉ์์ ์ผ๋ถ์
๋๋ค.
๋ฐฉ๋ฒ์ ์ฐพ์ผ์
จ๋ค๋ ๋คํ์
๋๋ค!
์ SConstruct๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๋น๋ ์์คํ ์ผ๋ก ์ ํํ์ง ๋ง๋ผ๊ณ ์ฃผ์ฅํฉ๋๊น???
@tjysdsg ์์ ๋ ผ์๋ ๋งค์ฐ ์ ์์ฝ๋์ด ์์ต๋๋ค :slightly_smiling_face:
๋น๋ ์์คํ ์ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ์ฌ์ ์ ์๋๊ฐ ์์์ ์๋ ๋์ ๋ถ๋ช ํ ํ์ผ๋ฏ๋ก ์ด๊ฒ์ ๋ซ๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ SCons์ ๋ง์กฑํ๋ฉฐ ๊ทธ ๋จ์ ์ ๋๊ตฌ ์์ฒด๋ก ์ธํ ๊ฒฝ์ฐ ์์ฒด SCons ์ฌ์ฉ๊ณผ ์ ์คํธ๋ฆผ ๋ชจ๋์์ ๊ฐ๋ณ์ ์ผ๋ก ํ๊ฐํ ์ ์๊ณ ๋ ํ๊ฐํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํด "์ฟจ๋ฌ" ๋น๋ ์์คํ ์ผ๋ก ์ ํํ๋ ์ผ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋๋ค์์ ํต์ฌ ๊ธฐ์ฌ์๋ค์ SCons๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์กฑํ๊ณ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ง๊ธ ๊ฐ์ฅ ์ ์๊ณ ์๋ ๊ฒ์ ๋๋ค. ์๋ก์ด ๋น๋ ์์คํ ์ผ๋ก ์ ํํ๋ ค๋ฉด ๊ตฌํ๊ณผ ํ์ต ๋น์ฉ์ด ๋ชจ๋ ํ์ํ๋ฉฐ, ์ด๊ฒ์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ๋งํ ๊ฐ์น๊ฐ ์๋์ง๋ ์ง๊ธ๊น์ง ์ ์ฆ๋์ง ์์์ต๋๋ค.
๋์ฒด๋ก ๋น๋ ์์คํ
๋ณ๊ฒฝ์ ์๋ก์ด ๊ธฐ์ฌ์๋ก๋ถํฐ ๋ฐ์๋ค์ผ ์ ์๋ ๊ฒ์ด ์๋๋๋ค. ๋ด๋ถ์์ ์์ผ ํ๋ฉฐ ๋ชจ๋ ํต์ฌ ๊ธฐ์ฌ์๊ฐ ์ด๋ฅผ ๊ธ์ ์ ์ธ ๋ณํ๋ก ๋ณด์์ผ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ค์์ Godot๋ฅผ ๋น๋ํ๋ ค๊ณ ์๋ํ๊ณ cmake
๋๋ meson
๋์ scons
๋ฅผ ์
๋ ฅํด์ผ ํ๋ ๊ฒ์ ์ข์ํ์ง ์๋ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ๊ธฐ์๊ฒ ํ๊ธฐ ์ํด ๋น๋ ์์คํ
์ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ ์
๋๋ค meson
๊ทธ๋ค์ ์ต์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ์ ํ์ ์ ๋น๋ ์์คํ
์ ๋์
ํ๋ ค๋ ์๋๋ฅผ ๋ฐ์๋ค์ด์ง ์์ ๊ฒ์
๋๋ค. ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ด ๋ถ์ผ์น, ๋ฒ๊ทธ ๋ฐ ์ถ๋ ฅ ์ฐจ์ด๋ก ์ด์ด์ง ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋ฌผ๋ก ๋น๋ ์์คํ ๋ณ๊ฒฝ ๋น์ฉ์ ๋ฅ๊ฐํ๋ ๋ช ๋ฐฑํ ์ด์ ์ด ๋์ด๋๊ณ ๊ฐ๋ ์ฆ๋ช ๊ณผ ํจ๊ป ํ์๋ ์ ์๋ค๋ฉด ๋ง์์ ๋ฐ๊ฟ ์ ์์ง๋ง, ์ค๋ ํ์ฌ์ ์ฌ๊ธฐ์ 2๋ ๊ฐ์ ๋ ผ์ ๋์ ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ํ์ง ์์ต๋๋ค. ์ธ์ผํฐ๋ธ๋ฅผ ๋ณด์ง ๋ง์ญ์์ค.
@slurps-mad-rips๊ฐ ์ ๋งํ์ต๋๋ค.
scons๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ
๋ด CMake ๋น๋๋ ์๋ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ณ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ง์ ์ ์ ๋ถ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์์์ต๋๋ค.
ํ๋ซ CMake ์ฌ๊ฐํ๊ฒ ๊ณ ๋ ค๋์ง ์์ ์ญ๊ฒจ์ด์์, ๋๋ ๋๋ SCons๋ ๋ง์ ์ด์ ๋ฅผ ์๊ฐํ ์ ์์ง๋ง, CMake ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌ ํน๋ณํ ๊ฒ์ SCons๋ ๊ทธ๊ฒ์ "๊ฐ์น๊ฐ"๋ค๋ฅธ ์ฌ์ฉ ๋ญ๊ฐ ํ ์ ์์ต๋๋ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด "์ฟจ๋ฌ" ๋น๋ ์์คํ ์ผ๋ก ์ ํํ๋ ์ผ์ ์ผ์ด๋์ง ์์ต๋๋ค.
CMake๋ "์ฟจ๋ฌ"๊ฐ ์๋๋ผ ํ์ค์ ๋๋ค. ์ค์ ๋ก ์ฌ์ฉํด๋ณด๋ฉด ๊ทธ ์ด์ ๋ฅผ ๋ฐ๋ก ์ ์ ์์ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก ๋น๋ ์์คํ ๋ณ๊ฒฝ ๋น์ฉ๋ณด๋ค ๋ ํฐ ์ด์ ์ด ๋์ด๋๊ณ ์์ ๊ฐ๋ ์ฆ๋ช ๊ณผ ํจ๊ป ํ์๋ ์ ์๋ค๋ฉด ๋ง์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
๋๋ ๋๊ตฌ๋ ์ง ๋ง์์ ๋ฐ๊ฟ ์ ์๋ค๊ณ ํ์ ํ์ง ์์ต๋๋ค. ์ญ์๋ @slurps-mad-rips๋ ํ์คํ ์ด๋์ ๋ณด์์ผ๋ฉฐ ๊ทธ๋ ๋ ๋ชจ๋ ์์ ์ ์ํํ์ต๋๋ค. ์ด๋ฏธ ์๋ฃ๋์์ต๋๋ค.
๊ฐ๋ฐ ๊ณผ์ ์ ๊ฐ์ ํ๊ธฐ ์ํ ๊ทธ๋ ์ ๋ ธ๋ ฅ์ ์์ ํ ๋ฌด์ํ๋ ๊ฒ์ Godot ํ์ ๊ณต์ ์ ์ฅ์ ๋ํ๋ด๋ ์์น์ค๋ฌ์ด ์ผ์ ๋๋ค.
๋๋ ๋น์ ์ ๊ณ ํต์ ์ถฉ๋ถํ ์ดํดํ์ง๋ง ์ฌ์ ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
์์คํ
์๋
์ฅ์ ๊ณผ ๋จ์ ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋์ผํฉ๋๋ค. ๊ธฐ์ ์ ์ธ ์ด์ ๊ฐ ๊ฑฐ์ ์์
๊ทธ๊ฒ์ ๋ณ๊ฒฝํฉ๋๋ค.
์ ์น์ ์ธ ์ด์ ๋ก ๊ทธ๋ค์ ์ค๋ซ๋์ ๋น์ ์๊ฒ ์ข์ ์ผ์ ํ์ง ์์ ๊ฒ์
๋๋ค.
์ด์. ์ฌ๋ฌ๋ถ
๋ค๋ฅธ ๊ฒ์ ์ ํธํฉ๋๋ค. ์ด์จ๋ ํฌํฌ๋ฅผ ํ๋ ๊ฒ์ ๋ง๋ ์ฌ๋์ ์๋ฌด๋ ์์ต๋๋ค.
๋ฌด์์ด๋
์ด์ , ๊ทธ๋์ ๋๋ ์ด๊ฒ์ด ๋ฌด์๋ณด๋ค ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค.
2020๋ 2์ 21์ผ ๊ธ์์ผ ์คํ 1์ 38๋ถ dorkbox [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ต๋๋ค.
@slurps-mad-rips https://github.com/slurps-mad-rips ๊ฐ ์ ๋งํ์ต๋๋ค.
scons๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ
๋ด CMake ๋น๋๋ ๋ง์ ์ ์ ๋ถ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ ์ ์์์ต๋๋ค.
์๋ง์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ์ผ๋ฉฐ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.CMake๊ฐ ์ง์งํ๊ฒ ๊ณ ๋ ค๋์ง ์๋๋ค๋ ๊ฒ์ด ์ญ๊ฒน์ต๋๋ค.
๋๋ SCons๋ ๋ง์ ์ด์ ๋ฅผ ์๊ฐํ์ง๋ง, ํน๋ณํ ๊ทธ CMake์ ๋ฐ๊ฒฌ
Scons๊ฐ ์ฐพ์ง ๋ชปํ ์ค๋ฅ๋ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด "ํ ๊ฐ์น๊ฐ ์๋" ๊ฒ์ ๋๋ค.์ด๋ฅผ ์ํด "์ฟจ๋ฌ" ๋น๋ ์์คํ ์ผ๋ก ์ ํํ๋ ์ผ์ ์ผ์ด๋์ง ์์ต๋๋ค.
CMake๋ "์ฟจ๋ฌ"๊ฐ ์๋๋ผ ํ์ค์ ๋๋ค. ์ค์ ๋ก ์ฌ์ฉํด๋ณด๋ฉด
์ด์ ๋ฅผ ์ฆ์ ์ดํดํ์ญ์์ค.๋ฌผ๋ก ๋ช ํํ ์ด์ต์ด ๋์ด๋ ์ ์๋ค๋ฉด ๋ง์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
(๋ฐ ์๋ํ๋ ๊ฐ๋ ์ฆ๋ช ๊ณผ ํจ๊ป ํ์๋จ)
๋น๋ ์์คํ ๋ณ๊ฒฝ๋๋ ๋๊ตฌ๋ ์ง ๋ง์์ ๋ฐ๊ฟ ์ ์๋ค๊ณ ํ์ ํ์ง ์์ต๋๋ค. ๋ค์,
@slurps-mad-rips https://github.com/slurps-mad-rips ๋ ๋ถ๋ช ํ ์ด๋์ ๋ณด์ฌ์คฌ๊ณ ,
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ์ฌ์ง์ด ๋ชจ๋ ์์ ์ ์ํํ์ต๋๋ค... ์ด๋ฏธ ์๋ฃ๋์์ต๋๋ค.Godot ํ์ ๊ณต์ ์ ์ฅ์ ๋๋ณํ๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์ ๋๋ค.
๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๋ ค๋ ๊ทธ๋ ์ ๋ ธ๋ ฅ์ ์์ ํ ๋ฌด์ํ์ญ์์ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/16014?email_source=notifications&email_token=AAABPU2PBIEK6PFKQ2LDTHLRD6VKVA5CNFSM4ENJ6NN2YY48PONVWWK3TUL52HS4DFVREXG43VMVBW63
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAABPU746R4YFHAI73Z57RTRD6VKVANCNFSM4ENJ6NNQ
.
@dorkbox - cmake๊ฐ ์ ์ ๋ถ์ ์ค๋ฅ๋ฅผ ์ฐพ์์ต๋๊น? ์๋๋ฉด llvm์ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ํตํด ์คํ๋ cmake์ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๋ ฅ์ด ๊ทธ๊ฒ๋ค์ ์ฐพ์์ต๋๊น?
@bdbaddog , @slurps-mad-rips ์ด ์์ ์ ์ํํ์ผ๋ฉฐ ๊ทธ๋ ์๊ฒ ๋ฌผ์ด๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. (llvm์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ผ๊ณ ์๊ฐํ์ง๋ง cmake๋ฅผ ํตํด ๋น๋ ์์ ์ ํ ์ฌ๋์ ์๋๋๋ค.)
@slapin
๊ธฐ์ ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ด์ ๊ฐ ๊ฑฐ์ ์์ต๋๋ค.
์ ์ ๋ถ์ ๋๊ตฌ ๋ฐ ์ต์ ์ธ์ด ๊ธฐ๋ฅ ์ง์์ ์ด๋ป์ต๋๊น?
@bdbaddog @dorkbox CMake๋ฅผ ํตํด "๋น์ ์ ๋ก์ปฌ์ ๋ํ ์ฐธ์กฐ ๋ฐํ" ๋ฐ "๋ฒํผ ์ค๋ฒํ๋ก"์ ๊ฐ์ ํญ๋ชฉ์ ์ฐพ๊ธฐ ์ํด ๊ฐ๋จํ clang-tidy๋ฅผ ์ผฐ์ต๋๋ค. ๋๋ ๋ํ ๋ช ๊ฐ์ง์ ๋ํด clang-check๋ฅผ ์คํํ๊ณ ๋ช ๊ฐ์ง ๋ ๋ง์ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค. include-what-you-use
๋ ์คํํ ์ ์์๊ณ ๋ถํ์ํ ํค๋ ํฌํจ ํญ๋ชฉ์ด ๊ฝค ๋ง์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
์ฆ, ์ค์ ๋ก cmake ํฌํธ๋ฅผ "๋ง๋ฌด๋ฆฌ"ํ์ง ์์์ต๋๋ค. ์ด์๋์ง ์์ ๋ถ๋ถ์ JSON์์ ํ์ผ์ ์์ฑํ๊ธฐ ์ํด ์ผ๋ถ ํ์ผ์์ ๋จ์ํ f.write
๋ฅผ ํธ์ถํ๋ ํ์ฌ python ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ ๋ชจ๋ ์์
์ด์์ต๋๋ค. ๋ง์ ๋ก์ง์ ์ ๊ฑฐํ๊ณ ์ผ๋ฐ jinja2 ๊ธฐ๋ฐ ํ
ํ๋ฆฟ ์์ฑ๊ธฐ๋ก ๋์ฒดํ ์ ์์์ต๋๋ค. ์ด๊ฒ์ ๋ํ ํ์ฌ scons ๋น๋๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ํ์ผ๋ก ์์ํ๋ Windows์์ ์ํํ๋ ํดํน์ ํด๊ฒฐํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ scons ๋น๋์ ํจ๋ฆฌํฐ๋ฅผ ์ ์งํ๊ณ ์ต์ํ ์ฝ๋ ์์ฑ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ๊ธฐ๋ฅผ ์ํ์ต๋๋ค. ์ด๊ฒ์ ์์ค ํ์ผ์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ Python ์คํฌ๋ฆฝํธ๊ฐ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋๊ธฐํ ์ํ๋ก ์ ์งํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ง ์์์ต๋๋ค. ๋ด jinja2 ํ ํ๋ฆฟํ๋ ์ข์ ์ ์ฐ์ต์ด์์ต๋๋ค.
GDC GitHub ๋ชจ์์์ ์์ ๊ฐ๋ฐ์๋ค๋ก๋ถํฐ ๋งค์ฐ ๋จํธํ๊ณ ๋จํธํ "์๋์ค"๋ฅผ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ Godot์ ๊ธฐ์ฌํ๊ณ ์ถ์ง ์๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ๋ด ๋ณ๊ฒฝ ์ฌํญ์ ์์น ์์์ผ๋ฉฐ ์ํ์ง ์์ผ๋ฉฐ ์ด ๋ฌธ์ ์ ๋ํ ๋ค๋ฅธ ์ฌ๋์ ์๊ฒฌ์ ๋ฌด๊ด์ฌํฉ๋๋ค. ๋๋ Godot๋ Godot์ ์ด๋ค ํฌํฌ์๋ ๊ธฐ์ฌํ์ง ์์ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ์์ ์์ ๊ฐ๋ฐ์๋ฅผ ์ค๋ํ๋ ๋ฐ ํ์ด์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ง๋ง ์ด๋ ๋ง์น ๋ฒฝ๋ ๋ฒฝ์ ๋๊ณ ๋งํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ค๋ ๋์ ์๋ ๋ชจ๋ ์ฌ๋์ ๊ณค๊ฒฝ์ ๊ตดํ์ง ์๊ณ , ์์ง์ด์ง ์์ผ๋ฉฐ, ๋๋ดํฉ๋๋ค.
๋ฐ๋ผ์ SCons๊ฐ llvm ๋๊ตฌ์ ์ ๋ ฅ๋๋ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฑ์ด๋ผ ์ ์์ผ๋ฉด SCons์์๋ ์ํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ SCons๊ฐ llvm ๋๊ตฌ์ ์ ๋ ฅ๋๋ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฑ์ด๋ผ ์ ์์ผ๋ฉด SCons์์๋ ์ํํ ์ ์์ต๋๋ค.
SCons์ ๋งค๋ชฐ ๋น์ฉ ์ค๋ฅ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. cmake์ ๊ฐ์ด ๋ ์ฝ๊ณ ๋ฅ๋ฅ ์ ์ด๋ฉฐ ์ด๋ฏธ ๊ธฐ์กด ๋น๋ ๋๊ตฌ์ ์ผ๋ถ์ธ ๊ฒ์ ์ฌ์ฉํ์ง ์์ผ์๊ฒ ์ต๋๊น?
scons ์น์ฌ์ดํธ์์:
scons์ ๋น๊ตํ ๋ CMake๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ ๋น ๋ฅด๊ฒ
- ์ผ๋ฐ์ ์ธ ์์ ์ ๋ ์ ์ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
- ๋ ์์ ์ ์
- scons๊ฐ ์ง์ํ์ง ์๋ Code::Blocks, Xcode ๋ฑ๊ณผ ๊ฐ์ ํ๋ก์ ํธ๋ก์ ์ถ๋ ฅ์ ์ง์ํฉ๋๋ค.
@dorkbox - ์ ๋ SCons ํ๋ก์ ํธ ๊ณต๋ ๊ด๋ฆฌ์์ ๋๋ค. ์ํ๋ ๊ธฐ๋ฅ๋ง ์ง์ผ๋ณด๊ณ ์์ต๋๋ค.
๋ง์ง๋ง ๋ช ๊ฐ์ง ๋ฆด๋ฆฌ์ค์ ๋ค์ ๋ฆด๋ฆฌ์ค์๋ ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค.
๋ํ ๋์ ํ์ผ ์์ฑ์ ์ํ PR์ด ์์ผ๋ฉฐ ์ผ๋ถ ์ปค๋ฎค๋ํฐ ํ์์ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ตฌ๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ผ๋ถ ๋ฌธ์ ๋ ๋ค์ ๋ฆด๋ฆฌ์ค์์ (์์ ํ์ง๋ ์๋๋ผ๋ ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก) ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ์ง ์์ Godot ํ๋ก์ ํธ์ ์ํฅ์ ๋ฏธ์น๋ ์์ ์ฑ ๋ฌธ์ ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค. ๋ฏธํด๊ฒฐ ํญ๋ชฉ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
(๋ค์์ ํตํด ์ ํฌ์๊ฒ ์ฐ๋ฝํ์ญ์์ค: https://scons.org/contact.html)
๋๋ cmake๊ฐ ์ผ๋ฐ์ ์ธ ์์ ์ ์ํด ๋ ์ ์ ์ฝ๋๋ฅผ ํ์๋ก ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํฉ๋ฆฌ์ ์ธ ๋น๊ต์ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค.
์, ๋ด๊ฐ scons๋ก ๋๋ฅผ ๊ฐ์ฅ ๊ดด๋กญํ๋ ๊ฒ์ ํ๋ฒํ ์ค๋๋ ๊ฒ์ ์์ฑ ํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
GNU ๋ฉ์ดํฌํ์ผ. ๋์ ๋ถ์กฑ - ๋๋ ๊ทธ๊ฒ์ผ๋ก ์ด ์ ์์ต๋๋ค.
๋ํ CMake ํด์ฒด์ธ ๋ฐ autotools์ ๊ฐ์ ํฌ๋ก์ค ์ปดํ์ผ ์ ํธ๋ฆฌํฐ ์ฒ๋ฆฌ
ํฌ๋ก์ค ์ปดํ์ผ ๊ธฐ๋ฅ์ ๊ฐํ cmake ์ฝ์ ์
๋๋ค.
๋๋จธ์ง๋ IDE ์ฌ๋์ด ์๋๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค. ๋ด IDE๋ UNIX ํ๊ฒฝ์
๋๋ค.
2020๋
2์ 23์ผ ์ผ์์ผ ์คํ 10:05 William Deegan [email protected]
์ผ๋ค:
@dorkbox https://github.com/dorkbox - ์ ๋ SCons ํ๋ก์ ํธ ๊ณต๋ ๊ด๋ฆฌ์์ ๋๋ค.
์ํ๋ ๊ธฐ๋ฅ๋ง ์ง์ผ๋ณด๊ณ ์์ต๋๋ค.์ง๋ ๋ช ๊ฐ์ง ๋ฆด๋ฆฌ์ค์ ๋ค์ ๋ฆด๋ฆฌ์ค์๋ ์ฑ๋ฅ์ด ์์์ต๋๋ค.
๊ฐ๋.๋ํ ๋์ ํ์ผ ์์ฑ ๋ฐ ์ผ๋ถ ์ปค๋ฎค๋ํฐ์ ๋ํ PR์ด ์์ต๋๋ค.
๊ตฌ์ฑ์์๊ฒ๋ ์ปดํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ตฌ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ผ๋ถ ๋ฌธ์ ๋
๋ค์ ๋ฆด๋ฆฌ์ค์์ (์ ์ฒด๋ ์๋์ง๋ง ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก) ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.๋๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ Godot ํ๋ก์ ํธ์ ์ํฅ์ ๋ฏธ์น๋ ์์ ์ฑ ๋ฌธ์ ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
๋ค๋ฃจ์ง ์์์ต๋๋ค. ๋ฏธํด๊ฒฐ ํญ๋ชฉ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
(๋ค์์ ํตํด ์ ํฌ์๊ฒ ์ฐ๋ฝํ์ญ์์ค: https://scons.org/contact.html)๋๋ cmake๊ฐ ์ผ๋ฐ์ ์ธ ์์ ์ ์ํด ๋ ์ ์ ์ฝ๋๋ฅผ ํ์๋ก ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํฉ๋ฆฌ์ ์ธ ๋น๊ต์ ๊ด์ฌ์ด ์์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/godotengine/godot/issues/16014?email_source=notifications&email_token=AAABPU5TQQFET5RS2JDRY7TRELCHDA5CNFSM4ENJ6NN2YY3PNVWWK3TUL52HS4DFVEXG43VMVBW63LN
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAABPU6UHPX3HJTWPAFTPATRELCHDANCNFSM4ENJ6NNQ
.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"Google์ด ์ค๋จํ ๊ฒ"์ด๋ผ๋ Wikipedia ๋ฒ์ฃผ๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. :)