2014-02-20 3 views
1

Я пытаюсь получить параметры ввода, используя boost::program_options.Параметры программы увеличения: несколько параметров для одного и того же значения

Я хотел бы иметь два источника параметров один из командной строки, а другой - из файла, но я также хочу иметь разные имена параметров для одного и того же значения.

commandLine.add_options() 
("dim,d", po::value<int>(&dimension), "Problem dimension") 
("adv", po::value<bool>(&adv_enabled), "Enable/Disable advection term {1|0}") 
("div", po::value<bool>(&div_enabled), "Enable/Disable divergance term {1|0}") 

file_options.add_options() 
("dimension",po::value<int>(&dimension), "Set Problem dimension") 
("enable.advection", po::value<bool>(&adv_enabled), "Enable/Disable advection") 
("enable.divergance", po::value<bool>(&div_enabled), "Enable/Disable divergance") 

Здесь я хочу использовать более короткие версии в командной строке и сгруппированные версии в файле.

Есть ли способ просто передать переменную для обоих или должен ли я проанализировать их в коде?

+0

Looks значения параметров командной строки будут перезаписаны значениями параметров файла. Это то, что вы хотите? Вы пытались выполнить? – HAL

+0

Я хочу переписать параметры файла с помощью параметров командной строки, но это не делает то, что я хочу. Я тестирую запуск кода, и если я изменяю значение say с помощью командной строки, он не будет обновлять значение. – Ashkan

ответ

0

Ответ довольно прост в документации:

Конечно, будет необходимо объединить значения из командной строки и конфигурационного файла. Например, уровень оптимизации, указанный в командной строке, должен переопределять значение из файла конфигурации. С другой стороны, включить пути следует комбинировать.

... что произойдет, если одно и то же значение указано как в командной строке, так и в файле конфигурации? Обычно предпочтительным является значение, сохраненное первым. Это то, что происходит для опции «-optimization». Для «составления» параметров, таких как «include-file», значения объединяются.
http://www.boost.org/doc/libs/1_55_0/doc/html/program_options/tutorial.html#idp163316264

Вы можете добавить параметры, которые повторяются в командной строке и в конфигурации, и если он не является переходящую вариант, предпочтение будет отдано той первой вызываемым с po::store()

Смежные вопросы