์ธ์ˆ˜ 3.0

๋ช…๋ น์ค„ ์ธ์ˆ˜ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•œ 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€