Ninja: ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 08์›” 09์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ninja-build/ninja

์— ๋Œ€ํ•œ ํ† ๋ก  ์ฐธ์กฐ
https://groups.google.com/d/topic/ninja-build/ZGZ2Ewxsxaw/discussion
๊ฑฐ๊ธฐ์— ์—ฐ๊ฒฐ๋œ ์ด์ „ ์Šค๋ ˆ๋“œ.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” PR์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ? https://github.com/mesonbuild/meson/ ์— ๋Œ€ํ•œ ์„ฑ๊ฐ€์‹  ์ฐจ๋‹จ๊ธฐ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ํ•„์š”ํ•œ ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•ด ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Makefile๊ณผ Visual Studio ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋„ ์ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ Ninja๋Š” ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค. :)

Ninja์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

๊ทธ ํ† ๋ก ์„ ์ฝ์–ด๋ณด๋ฉด CreateProcess lpCommandLine ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‹คํ–‰ํ•  ์‹คํ–‰ ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด PATH ์„ค์ •์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ Ninja์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. lpApplicationName ? ๋ฌธ์ œ๋Š” execvpe ๋ฐ execle ์— ๋™์ผํ•œ ์ œํ•œ์ด ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์† ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ!

FWIW, https://github.com/mesonbuild/meson/issues/266 , https://github.com/mesonbuild/meson/issues/384 ๋“ฑ Meson์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ž˜ ํ™œ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” PR์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ? https://github.com/mesonbuild/meson/ ์— ๋Œ€ํ•œ ์„ฑ๊ฐ€์‹  ์ฐจ๋‹จ๊ธฐ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ํ•„์š”ํ•œ ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•ด ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Makefile๊ณผ Visual Studio ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋„ ์ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ Ninja๋Š” ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค. :)

Ninja์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

POSIXy ํ”Œ๋žซํผ์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

rule foo
  command = ENV1=env1 ENV2=env2 my_command

๋˜๋Š”

rule foo
  command = $env my_command
foo out: in
  env = ENV1=env1 ENV2=env2

๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์€ env vars๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์€ ํ•ญ๋ชฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋‹Œ์ž๊ฐ€ ๋‹จ์ˆœํ•ด์ง‘๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ ๋ถ€๋ถ„ ์€ ๋ฌธ์„œํ™” ๋˜์–ด ์žˆ์ง€๋งŒ Meson์€ ํ”Œ๋žซํผ ๊ฐ„ ๋นŒ๋“œ ์‹œ์Šคํ…œ(์ง€์›๋˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๊ฐ–๊ธฐ ์œ„ํ•œ ๊ฒƒ)์ด๋ฉฐ ํ˜„์žฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค Python ์Šคํฌ๋ฆฝํŠธ ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (ํŠนํžˆ ๊ฐœํ–‰).

์ฒ˜์Œ์—๋Š” env vars๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ‹ˆ์ƒˆ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•  ๋•Œ ๋’ค๋กœ ๋ฏธ๋ฃจ์—ˆ์ง€๋งŒ ๋†€๋ž๊ฒŒ๋„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•„์š”๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, GNOME์˜ gobject-introspection์€ ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋™์•ˆ CC / CXX /etc๋ฅผ ์„ค์ •ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ž๋™ ๊ฐ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž˜๋ชป๋œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Meson์˜ "์‚ฌ์šฉ์ž ์ง€์ • ๋Œ€์ƒ"์€ ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ๋žŒ๋“ค์€ ์ข…์ข… ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌป๋Š” ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Python ์Šคํฌ๋ฆฝํŠธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ดœ์ฐฎ์ง€๋งŒ ๊ฐ ๋ช…๋ น์— ๋Œ€ํ•ด Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋•Œ๋•Œ๋กœ ์ž‘์—… ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

gobject-introspection์ด ๋Œ€์‹  ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋‚ด ๊ฒฝํ—˜์ƒ ํ”Œ๋ž˜๊ทธ ๋Œ€์‹  ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์˜์กดํ•˜๋Š” ๋นŒ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ ๋“ฑ์„ ๋ง์น˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์ทจ์•ฝํ•œ ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.)

MSVC์˜ cl.exe๋Š” ํฌํ•จ ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹Œ์ž์—๊ฒŒ๋Š” ํŒŒ์ผ์—์„œ ํ™˜๊ฒฝ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” -e ninja -t msvc ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ meson์€ ์ด๋ก ์ ์œผ๋กœ Windows์—์„œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” posix๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋“œ๋ฌธ "์œ ์—ฐ์„ฑ์ด ํ•„์š”"ํ•œ ๊ฒฝ์šฐ์— ํŒŒ์ด์ฌ ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  env์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์ธ ๋ช…๋ น์„ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋ด‰์ฐฉํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฐฝ์—์„œ FIPS ์‹คํ–‰ ํŒŒ์ผ์„ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋‹ค์Œ ์ง€์นจ์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://www.openssl.org/docs/fips/UserGuide-2.0.pdf , ์„น์…˜ 5.3.2:

For the Windowsยฎ
 environment a perl script fipslink.pl is provided which performs a
function similar to fipsld for Unixยฎ
/Linuxยฎ
. Several environment variables need to be set:
FIPS_LINK is the linker name, normally โ€œlinkโ€
FIPS_CC is the C compiler name, normally โ€œclโ€
FIPS_CC_ARGS is a string of C compiler arguments for compiling fips_premain.c
PREMAIN_DSO_EXE should be set to the path to fips_premain_dso.exe if a DLL is
being linked (can be omitted otherwise)
PREMAIN_SHA1_EXE is the full path to fips_standalone_sha1.exe
FIPS_TARGET is the path of the target executable or DLL file

๋‚ด ํ™˜๊ฒฝ์— FIPS_CC๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ ๋‹Œ์ž๊ฐ€ env๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค( perl fipslink.pl ... )์— ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. -๊ฐ€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋œ ์‹คํ–‰ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— LD_LIBRARY_PATH ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž ์ •์˜ ์ ‘๋‘์‚ฌ์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฒ„์ „์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋œ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—ฐ๊ฒฐ๋œ ์‹คํ–‰ ํŒŒ์ผ์— ์ข…์ข… ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค( -Wl,-rpath DT_RUNPATH ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฐํฌํŒ ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . Debian ๋ฐ Ubuntu์™€ ๊ฐ™์€ DT_RPATH ์ค‘). Autotools(libtool)๋Š” ์ด๋ฅผ ์œ„ํ•ด ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋นŒ๋“œ ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋Š๋ ค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋กœ์„œ cmake๋Š” ํ™˜๊ฒฝ์„ ์„ค์ •ํ•œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ˜ธ์ถœ ํ•˜๋Š” C ๋ž˜ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๋“ค์˜ make ๋ฐฑ์—”๋“œ๋ฅผ ์œ„ํ•ด ์–ด์จŒ๋“  ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœ ํ•˜์ง€๋งŒ ๋‹Œ์ž ์ „์šฉ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ์ด ๊ธฐ๋Šฅ์œผ๋กœ๋ถ€ํ„ฐ ํฐ ์ด์ ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๊ฐ€ ๋” ์ด์ƒ ๋ฌด์—‡์„ ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๊ฒƒ ๊ฐ™์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

LD_LIBRARY_PATH ์˜ ๊ฒฝ์šฐ ๋ช…๋ น์ค„์„ ํ†ตํ•ด ์„ค์ •ํ•˜๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Nico์ฒ˜๋Ÿผ ์ด๋ฏธ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋ช…๋ น์ค„์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๋ฉด ์‰˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (Linux์˜ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋Š” ์–ด์จŒ๋“  ๋„ˆ๋ฌด ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— /bin/sh -c "echo hello" ๋„ ์ธก์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)

Windows์—๋Š” ninja -t msvc ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๊ฐ„์ž ๊ธฐ๋Šฅ์„ ์ž‘์„ฑํ•ด ๋ณด๊ณ  ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ๊ฐœ์„  ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kconfiglib์—๋Š” ์†Œ์Šค ์™ธ๋ถ€ ๋นŒ๋“œ์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ $srctree ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
https://github.com/ulfalizer/Kconfiglib/blob/424d0d38e7/kconfiglib.py#L108

ํ˜„์žฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค Python ์Šคํฌ๋ฆฝํŠธ ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐœ์‹ : https://github.com/ulfalizer/Kconfiglib/tree/424d0d38e7be15c5#overview

์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” kconfiglib.py์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ทธ ์œ„์— ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋น„๊ต์  ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰