I have an application, which spawns off other applications.
As input, it takes in environment variables and arguments to pass to the
resultant application. For instance:
mutate -E “env_var1=val” -a “.” ls
This will run:
ls .
and the environment will only have “env_var1”
equal to “val”
So. Something funny comes along when I try to pass “-e”
as an argument.
So, in the above would be:
mutate -a “-e” –a “foo” xterm
The program options parser attempts to parse the “-e”,
and says “I don’t know what it is”.
Any thoughts on having it skip that option?
Code Snippits:
po::options_description visible("Program options. Usage %1%");
visible.add_options()
("env,E",
po::value<string_vector_t>(), "Specify
an environment variable to run the executable with. In the form of
foo=bar")
("arg,a",
po::value<string_vector_t>(), "Specify a
command line argument to pass to the executable")
;
// Set up some
hidden options
po::options_description hidden("Hidden options");
hidden.add_options()
("executable",
po::value < std::string>(), "the
executable to run")
;
// Set up positional
arguments. They are going to be execute
po::positional_options_description pos;
pos.add("executable",
1); // There can only be 1 item executed
// Consolidate all
the options into a single one
po::options_description all_options("All Options");
all_options.add(visible);
all_options.add(hidden);
// Parse the command
line options
po::store(po::command_line_parser(argc,
argv).options(all_options).positional(pos).run(), vm);
po::notify(vm);