Meson ๊ฐ๋ฐ์ ์ฃผ์ ๋ชฉํ๋ ํธ๋ฆฌ์ฑ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ ๊ฒฐํฉํ ๋น ๋ฅธ ์กฐ๋ฆฝ ๊ณต์ ์ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. make ์ ํธ๋ฆฌํฐ ๋์ ๊ธฐ๋ณธ ๋น๋์์๋ ํดํท์ ์ฌ์ฉํฉ๋๋ค.
GCC, Clang, Visual Studio ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ Linux, macOS ๋ฐ Windows์์ ํฌ๋ก์ค ์ปดํ์ผ ๋ฐ ๋น๋๊ฐ ์ง์๋ฉ๋๋ค. C, C++, Fortran, Java ๋ฐ Rust๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ง์ง๋ง ๋น๋ ์ดํ ๋ณ๊ฒฝ๋ ์ฌํญ๊ณผ ์ง์ ๊ด๋ จ๋ ๊ตฌ์ฑ ์์๋ง ๋ค์ ๋น๋ํ๋ ์ฆ๋ถ ๋น๋ ๋ชจ๋๊ฐ ์ง์๋ฉ๋๋ค. Meson์ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋น๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฆ, ์๋ก ๋ค๋ฅธ ํ๊ฒฝ์์ ๋น๋๋ฅผ ์คํํ๋ฉด ์์ ํ ๋์ผํ ์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
์ฃผ์
- CMake ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์กด ํ๋ก์ ํธ์ ํฌ๋ช ํ ๋น๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. Meson์ ์ด์ ํ์ค ํ์ ํ๋ก์ ํธ์ ์ ์ฌํ๊ฒ CMake ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ํ์ ํ๋ก์ ํธ(์: ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ง์ ๋น๋ํ ์ ์์ต๋๋ค(CMake ํ์ ํ๋ก์ ํธ๋ฅผ ํฌํจํ์ฌ ํ์ ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ์ ๋ฐฐ์นํ ์ ์์).
- ์ฌ์ฉ๋ ๋ชจ๋ ์ปดํ์ผ๋ฌ์ ๋ํด ๊ฐ๋จํ ํ ์คํธ ํ์ผ์ ์กฐ๋ฆฝ ๋ฐ ์คํ(์จ์ ์ฑ ๊ฒ์ฌ)์ ํตํด ์๋น ํ ์คํธ๊ฐ ํฌํจ๋๋ฉฐ, ํฌ๋ก์ค ์ปดํ์ผ๋ฌ์ ๋ํ ์ฌ์ฉ์ ์ง์ ํ๋๊ทธ ํ ์คํธ์ ๊ตญํ๋์ง ์์ต๋๋ค(์ด์ ๋ถํฐ ํ์ฌ ํ๋ซํผ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ์ปดํ์ผ๋ฌ๋ ๊ฒ์ฌ๋ฉ๋๋ค). .
- ์ต์ ์์ ํ๋ซํผ ์ ๋์ฌ๋ฅผ ์ง์ ํ์ฌ ๋ฐ์ธ๋ฉ์ ํตํด ํฌ๋ก์ค ์ปดํ์ผ ์ค์ ์ฌ์ฉ๋๋ ๋ช ๋ น์ค ์ต์ ์ ์ ์ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์๋ ๋ช ๋ น์ค ์ต์ ์ด ๋ค์ดํฐ๋ธ ๋น๋์๋ง ์ ์ฉ๋์์ผ๋ฉฐ ํฌ๋ก์ค ์ปดํ์ผ์๋ ์ง์ ํ ์ ์์์ต๋๋ค. ์ด์ ๋ค์ดํฐ๋ธ ๋น๋ ๋๋ ํฌ๋ก์ค ์ปดํ์ผ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ช ๋ น์ค ์ต์ ์ด ์ ์ฉ๋๋ฏ๋ก ๋ค์ดํฐ๋ธ ๋น๋์ ํฌ๋ก์ค ๋น๋๊ฐ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฌ๋ฌ ๊ต์ฐจ ํ์ผ์ ๋์ดํ๊ธฐ ์ํด ๋ช ๋ น์ค์์ "--cross-file" ํ๋๊ทธ๋ฅผ ๋ ๋ฒ ์ด์ ์ง์ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- Windows ํ๋ซํผ(ICL.EXE ๋ฐ ifort)์ฉ ICL ์ปดํ์ผ๋ฌ(์ธํ C/C++ ์ปดํ์ผ๋ฌ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- Xtensa CPU(xt-xcc, xt-xc++, xt-nm)์ ๋ํ ์ด๊ธฐ ํดํท ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- "get_variable" ๋ฉ์๋๊ฐ "์ข ์์ฑ" ๊ฐ์ฒด์ ์ถ๊ฐ๋์ด ํ์ฌ ์ข ์์ฑ์ ์ ํ์ ๊ณ ๋ คํ์ง ์๊ณ ๋ณ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค(์: dep.get_variable(pkg-config : 'var- ์ด๋ฆ', cmake : 'COP_VAR_NAME));
- ๋ง์ปค๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉ๋๋ ์ธ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ๊ธฐ ์ํด ์๋ก์ด ๋์ ์ด์ ๋ธ๋ฆฌ ์ต์ ์ธ์ "link_์ธ์ด"๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธฐ๋ณธ Fortran ํ๋ก๊ทธ๋จ์ C/C++ ์ฝ๋๋ฅผ ํธ์ถํ ์ ์์ผ๋ฉฐ, ์ด๋ Fortran ๋ง์ปค๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ ์๋์ผ๋ก C/C++๋ฅผ ์ ํํฉ๋๋ค.
- CPPFLAGS ์ ์ฒ๋ฆฌ๊ธฐ ํ๋๊ทธ ์ฒ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. Meson์ ์ด์ ์ CPPFLAGS์ ์ธ์ด๋ณ ์ปดํ์ผ ํ๋๊ทธ(CFLAGS, CXXFLAGS)๋ฅผ ๋ณ๋๋ก ์ ์ฅํ์ง๋ง ์ด์ ๋ ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌ๋๋ฉฐ CPPFLAGS์ ๋์ด๋ ํ๋๊ทธ๋ ์ด๋ฅผ ์ง์ํ๋ ์ธ์ด์ ๋ํ ์ปดํ์ผ ํ๋๊ทธ์ ๋ ๋ค๋ฅธ ์์ค๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์ด์ custom_target ๋ฐ custom_target[i]์ ์ถ๋ ฅ์ link_with ๋ฐ link_whole ์์ ์ ์ธ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด์ ์์ฑ๊ธฐ๋ "์ข ์" ์ต์ ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์ข ์์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค(์: ์์ฑ๊ธฐ(program_runner, ์ถ๋ ฅ: ['@).[์ด๋ฉ์ผ ๋ณดํธ]'], ๋ฐ๋ผ ๋ค๋ฆ: exe));
- ์ ์ ์ผ๋ก ๋งํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๊ฒ์์ ํฌํจํ ์ ์๋๋ก find_library์ ์ ์ ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- python.find_installation์ ๊ฒฝ์ฐ ํน์ Python ๋ฒ์ ์ ๋ํด ํน์ Python ๋ชจ๋์ด ์๋์ง ํ์ธํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- kconfig ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ์ ๋ชจ๋ ๋ถ์์ -kconfig๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ์ธ์์ ํจ๊ป ๋ช ๋ น์ ๊ฐ์ ธ์ ๋ชจ๋ ํ์ ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ์์ ์คํํ๋ ์๋ก์ด ๋ช ๋ น "subprojects foreach"๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru