X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ๋ฐ GTK์ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ Meson 1.1.0 ๋น๋ ์์คํ ์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ต๋๋ค. Meson ์ฝ๋๋ Python์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
Meson์ ์ฃผ์ ๊ฐ๋ฐ ๋ชฉํ๋ ํธ๋ฆฌํจ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ด ๊ฒฐํฉ๋ ๊ณ ์ ์กฐ๋ฆฝ ๊ณต์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. make ๋์ ๋น๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Ninja ํดํท์ ์ฌ์ฉํ์ง๋ง xcode ๋ฐ VisualStudio์ ๊ฐ์ ๋ค๋ฅธ ๋ฐฑ์๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์คํ ์๋ Meson์ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ์ฉ ํจํค์ง๋ฅผ ๋น๋ํ ์ ์๋ ๋ด์ฅ ๋ค์ค ํ๋ซํผ ์ข ์์ฑ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์์ต๋๋ค. ์กฐ๋ฆฝ ๊ท์น์ ๋จ์ํ๋ ๋๋ฉ์ธ๋ณ ์ธ์ด๋ก ์ค์ ๋๋ฉฐ ์ฌ์ฉ์๊ฐ ์ ์ฝ๊ณ ์ดํดํ ์ ์์ต๋๋ค(์์ฑ์์ ์๊ฐ์ ๋ฐ๋ฅด๋ฉด ๊ฐ๋ฐ์๋ ๊ท์น์ ์์ฑํ๋ ๋ฐ ์ต์ํ์ ์๊ฐ์ ์๋นํด์ผ ํจ).
GCC, Clang, Visual Studio ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ๋ฐ Windows์์ ํฌ๋ก์ค ์ปดํ์ผ ๋ฐ ๋น๋๊ฐ ์ง์๋ฉ๋๋ค. C, C++, Fortran, Java, Rust ๋ฑ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ง์ง๋ง ๋น๋ ์ดํ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ง์ ๊ด๋ จ๋ ๊ตฌ์ฑ ์์๋ง ๋ค์ ๋น๋๋๋ ์ฆ๋ถ ๋น๋ ๋ชจ๋๊ฐ ์ง์๋ฉ๋๋ค. Meson์ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋น๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๊ฒฝ์์ ๋น๋๋ฅผ ์คํํ๋ฉด ์์ ํ ๋์ผํ ์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
Meson 1.1์ ์ฃผ์ ํ์ :
- ์๋ก์ด "objects:" ์ธ์๊ฐ declare_dependency()์ ์ถ๊ฐ๋์ด link_who๊ฐ ํ์ํ์ง ์์ ๋ด๋ถ ์ข ์์ฑ์ผ๋ก ์คํ ํ์ผ์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฒจ๋ถํ ์ ์์ต๋๋ค.
- "meson devenv --dump" ๋ช ๋ น์๋ ํ์ค ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ์ถ๋ ฅํ๋ ๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ธ ํ์ผ์ ์ง์ ํ๋ ์ ํ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- ์ข ์์ฑ() ํจ์์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ์ค๋น๋ก ์กฐ๊ฑด์ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก FeatureOption.enable_if ๋ฐ FeatureOption.disable_if ๋ฉ์๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค. opt = get_option('feature').disable_if(not foo, error_message : 'foo๊ฐ ํ์ฑํ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ํ์ฑํํ ์ ์์') dep = dependency('foo', required : opt)
- "objects:" ์ธ์ ๊ฐ์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
- ํ๋ก์ ํธ ๊ธฐ๋ฅ์ ํ๋ก์ ํธ ๋ผ์ด์ผ์ค์ ๋ํ ์ ๋ณด๊ฐ ์๋ ํ์ผ ์ค์น๋ฅผ ์ง์ํฉ๋๋ค.
- "sudo meson install"์ ์คํํ๋ฉด ๋์ ํ๋ซํผ์ ๋ค์ ๋น๋ํ๋ ๋์ ๊ถํ ์ฌ์ค์ ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- "meson install" ๋ช ๋ น์ ๋ฃจํธ ๊ถํ์ ์ป๊ธฐ ์ํ ๋ณ๋์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค(์: polkit, sudo, opendoas ๋๋ $MESON_ROOT_CMD๋ฅผ ์ ํํ ์ ์์). ๋น๋ํํ ๋ชจ๋์์ "meson install"์ ์คํํด๋ ๋ ์ด์ ๊ถํ ์์น์ ์๋ํ์ง ์์ต๋๋ค.
- meson_options.txt ๋์ meson.options ํ์ผ์์ ์ต์ ์ฝ๊ธฐ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ธํธ๋ก์คํ์ ์งํ์ ๋ํ ์ ๋ณด ์ถ๋ ฅ์ stderr๋ก์ ๋ฆฌ๋๋ ์ ์ ์ ๊ณตํ์ต๋๋ค.
- ์๋ก์ด "none" ๋ฐฑ์๋(--backend=none)๊ฐ ์ถ๊ฐ๋์ด ์ค์น ๊ท์น๋ง ์๊ณ ๋น๋ ๊ท์น์ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ์ข ์์ฑ('pybind11')์ด pybind11-config ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ pkg-config ๋ฐ cmake์ ํจ๊ป ์๋ํ๋๋ก ์๋ก์ด ์ข ์์ฑ pybind11์ด ์ถ๊ฐ๋์์ต๋๋ค.
- "--reconfigure" ๋ฐ "--wipe" ์ต์ (meson setup --reconfigure builddir ๋ฐ meson setup --wipe builddir )์ ๋น builddir์์ ํ์ฉ๋ฉ๋๋ค.
- meson.add_install_script()๋ dry_run ํค์๋์ ๋ํ ์ง์์ ์ถ๊ฐํ์ฌ "meson install --dry-run"์ ํธ์ถํ ๋ ์์ ์ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.
์ถ์ฒ : opennet.ru