Π‘ΠΎΡΡΠΎΡΠ»ΡΡ Π²ΡΠΏΡΡΠΊ 3.0 C++ (Π΄ΠΈΠ°Π»Π΅ΠΊΡ C++17) header-only Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ argparse, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ MIT.
Π§ΡΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ:
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
auto &group = program.add_mutually_exclusive_group(); group.add_argument("—first"); group.add_argument("—second");
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ 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("test"); program.add_argument("-n").scan<‘b’, uint8_t>();
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ is_subcommand_used, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ ΠΏΠ°ΡΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄;
- Π² ArgumentParser Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ exit_on_default_arguments;
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΊΡΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ —help:
argparse::ArgumentParser program("test"); argparse::ArgumentParser hidden_cmd("hidden"); hidden_cmd.add_argument("files").remaining(); hidden_cmd.set_suppress(true); program.add_subparser(hidden_cmd);
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ArgumentParser;
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠΉ ΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²;
- ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru