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.