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์ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ์ฉ ํจํค์ง๋ฅผ ๋น๋ํ ์ ์๋ ๋ด์ฅ ๋ค์ค ํ๋ซํผ ์ข ์์ฑ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์์ต๋๋ค. ์กฐ๋ฆฝ ๊ท์น์ ๋จ์ํ๋ ๋๋ฉ์ธ๋ณ ์ธ์ด๋ก ์ค์ ๋๋ฉฐ ์ฌ์ฉ์๊ฐ ์ ์ฝ๊ณ ์ดํดํ ์ ์์ต๋๋ค(์์ฑ์์ ์๊ฐ์ ๋ฐ๋ฅด๋ฉด ๊ฐ๋ฐ์๋ ๊ท์น์ ์์ฑํ๋ ๋ฐ ์ต์ํ์ ์๊ฐ์ ์๋นํด์ผ ํจ).
ํฌ๋ก์ค ์ปดํ์ผ ๋ฐ ์ด์ ๋ธ๋ฆฌ๊ฐ ์ง์๋ฉ๋๋ค. Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ะธ Windows GCC, Clang, Visual Studio ๋ฐ ๊ธฐํ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. C, C++, Fortran, Java, Rust ๋ฑ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ์ฆ๋ถ ๋น๋ ๋ชจ๋๋ฅผ ์ง์ํ์ฌ ์ด์ ๋น๋ ์ดํ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๊ณผ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋ ๊ตฌ์ฑ ์์๋ง ๋ค์ ๋น๋ํฉ๋๋ค. Meson์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต ๊ฐ๋ฅํ ๋น๋๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ํ๊ฒฝ์์ ๋น๋๋ฅผ ์คํํด๋ ์์ ํ ๋์ผํ ์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
Meson 1.1์ ์ฃผ์ ํ์ :
- declare_dependency()์ ์๋ก์ด "objects:" ์ธ์๊ฐ ์ถ๊ฐ๋์ด link_who๋ฅผ ์๊ตฌํ์ง ์๊ณ ๋ ๊ฐ์ฒด๋ฅผ ๋ด๋ถ ์ข ์์ฑ์ผ๋ก ์คํ ํ์ผ์ ์ง์ ์ฒจ๋ถํ ์ ์์ต๋๋ค.
- "meson devenv --dump" ๋ช ๋ น์ ์ด์ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅํ๋ ๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ธ ํ์ผ์ ์ง์ ํ๋ ์ ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- dependency() ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ์กฐ๊ฑด ๊ตฌ๋ฌธ์ ๋จ์ํํ๊ธฐ ์ํด 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-config ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ dependency('pybind11')์ด pkg-config ๋ฐ cmake์ ํจ๊ป ์๋ํ ์ ์๋๋ก ํ๋ ์๋ก์ด ์ข ์์ฑ pybind11์ ์ถ๊ฐํ์ต๋๋ค.
- ๋น์ด ์๋ builddir์์ "--reconfigure" ๋ฐ "--wipe" ์ต์ (meson setup --reconfigure builddir ๋ฐ meson setup --wipe builddir)์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- "meson install --dry-run"์ ํธ์ถํ ๋ ์ฌ์ฉ์ ์ ์ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋๋ก meson.add_install_script()์ dry_run ํค์๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru
