2017-02-06 9 views
1

동일한 키/레이블 아래에 인수를 저장하는 boost::program_options으로 옵션 별칭을 만들 수 있습니다.boost :: program_options를 사용하여 옵션 별칭을 만드는 방법은 무엇입니까?

내 소프트웨어 아키텍처는 argv[1] 값에 따라 다른 특수 옵션 파서를 사용합니다. 그러나 일부 옵션은 내 옵션 --inputs처럼 공유됩니다.

inputOptions.add_options() 
     ("--inputs", 
     po::value< std::vector<std::string> >()->value_name("paths"), 
     "List of files to edit.\n"); 

프로그램의 이전 버전과의 호환성을 위해, 나는 서브 파서 "--inputs"에서 인수 (들)을 저장하는 호환성 옵션 --input 중 하나에 추가하고 싶습니다. 이상적으로 옵션은 임의로 많은 인수 대신 하나의 인수를 취해야합니다. 그러나 --input--inputs과 동일한 솔루션을 제공하는 경우이 경우 위치 옵션이 "--inputs"로 전송되므로 문제가되지 않습니다.

도움 주셔서 감사합니다.

+2

내 머리 꼭대기에서 나는 당신이 상점 후에 수동 수표를해야한다고 생각합니다/불행히도 통지하십시오. –

+0

흠, 그건 불편합니다. 나는 파이썬의'argparse'에서'target' 옵션만큼 쉬운 것을 원했습니다 ... 고맙습니다. –

답변

1

po::value<...>(&variable) 양식을 사용해 보셨습니까? 옵션의 값은 구문 분석 된 후에 변수에 직접 저장됩니다. 그런 다음 동일한 변수를 가리키는 두 가지 옵션 인 --input--inputs을 추가 할 수 있습니다. 또한 두 옵션 중 하나만 사용되는지 확인하고, 그렇지 않으면 오류 메시지를 표시해야합니다.

귀하의 질문을 올바르게 이해했기를 바랍니다.

+0

제안 해 주셔서 감사합니다. 그러나 variables_map은 코드의 여러 위치에서 던져 지므로 솔루션은 실제로 나에게 유용하지 않습니다. 그러나 내가 코드를 리팩터링했다면, 그것을 사용할 수도 있습니다. –