๋ช ๋ น์ค ์ธ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ํ 3.0 C++(C++17 ๋ฐฉ์ธ) ํค๋ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ์ Argparse, MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ :
- ์ํธ ๋ฐฐํ์ ์ธ ์ธ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์๋ &๊ทธ๋ฃน = program.add_mutually_exclusive_group(); group.add_argument("โ์ฒซ ๋ฒ์งธ"); group.add_argument("โ๋ ๋ฒ์งธ");
- C++20 ๋ชจ๋์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ ์ค์์ ์ ํํ๋ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
program.add_argument("input") .default_value(std::string{"baz"}) .choices("foo", "bar", "baz"); program.add_argument("count") .default_value(0) .choices(0, 1, 2, 3, 4, 5);
- ์๋ฅผ ๋ค์ด 0b101๊ณผ ๊ฐ์ ์ด์ง ํ๊ธฐ๋ฒ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
argparse::ArgumentParser ํ๋ก๊ทธ๋จ("ํ ์คํธ"); program.add_argument("-n").scan<'b', uint8_t>();
- ํ์ ๋ช ๋ น ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ํ์ฉํ๋ is_subcommand_used์ ์ค๋ฒ๋ก๋๋ ๋ฒ์ ์ ์ถ๊ฐํ์ต๋๋ค.
- ArgumentParser์ exit_on_default_arguments ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- --help ๋ช ๋ น์ ์ถ๋ ฅ์์ โโํ์ ๋ช ๋ น์ ์จ๊ธฐ๋ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
argparse::ArgumentParser ํ๋ก๊ทธ๋จ("ํ ์คํธ"); argparse::ArgumentParser Hidden_cmd("hidden"); Hidden_cmd.add_argument("ํ์ผ").remaining(); Hidden_cmd.set_suppress(true); ํ๋ก๊ทธ๋จ.add_subparser(hidden_cmd);
- ArgumentParser์์ ๊ตฌ๋ฌธ ๋ถ์๋ ๊ฐ์ ํ์ธํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
- ์ธ์์ ๋ํ ์ฌ๋ฌ ์ค ๋์๋ง ์ด์ ์ ๋ ฌ์ ์ถ๊ฐํ์ต๋๋ค.
- ๋ง์ ๋ฒ๊ทธ๊ฐ ์์ ๋์์ต๋๋ค.
์ถ์ฒ : linux.org.ru