gflags is a simple argument parser in C++, we use it to parse the args.
When you use --help
and trying to print a help message, it will burst out a lot of useless flags.
This is because of the --help
is an alias of helpfull. And that is really annoying.
--help shows all flags from all files, sorted by file and then by name; shows the flagname, its default value, and its help string --helpfull same as -help, but unambiguously asks for all flags (in case -help changes in the future) --helpshort shows only flags for the file with the same name as the executable (usually the one containing main()) --helpxml like --help, but output is in xml for easier parsing --helpon=FILE shows only flags defined in FILE.* --helpmatch=S shows only flags defined in *S*.* --helppackage shows flags defined in files in same directory as main() --version prints version info for the executable
Here is a simple way to change it:
#include "gflags/gflags.h" DEFINE_int32(port, 8080, "your listening port"); // define for flags here DEFINE_bool(h, false, "help"); // if you wanna to use '-h' DECLARE_bool(help); // make sure you can access FLAGS_help DECLARE_bool(helpshort); // make sure you can access FLAGS_helpshort int main(int argc, char* argv[]) { gflags::SetUsageMessage("Usage: example-function [OPTION] ..."); gflags::ParseCommandLineNonHelpFlags(&argc, &argv, true); // please call `NonHelpFlags` variant if (FLAGS_help || FLAGS_h) { // if your help or h is true, make FLAGS_help off and FLAGS_helpshort on FLAGS_help = false; FLAGS_helpshort = true; } gflags::HandleCommandLineHelpFlags(); // add your handler back // your stuff here return 0; }
The above process is making sure you always call short helper in default.