Опция программы Boost генерирует ошибку без причины

Я использую Boost 1.62.0 в Windows с Visual Studio 2013 и предварительно скомпилированными библиотеками.

У меня есть этот пример кода:

#include "boost/program_options.hpp"
#include "boost/filesystem.hpp"
#include <iostream>


namespace po = boost::program_options;

int main(int argc, char *argv[])
{
    po::options_description desc("Allowed options");
    for (int i = 0; i < argc; i++)
    {
        std::cout << i << "->" << argv[i] << std:: endl;
    }
    try
    {

        std::string outputPath;
        boost::filesystem::path workingDir;
        // get program options and check them that they are valid
        {
            desc.add_options()
                ("input-path,i", po::value< std::string >(), "input path")
                ("output_path,o", po::value< std::string >(&outputPath)->implicit_value(""), "output path.")
                ;
            po::positional_options_description p;
            p.add("input-path", -1);
            po::variables_map vm;
            po::store(po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm);
            po::notify(vm);

            if (vm.count("input-path") == 0)
            {
                std::cout << "No input directory specified.\n";
                return -1;
            }


            workingDir = vm["input-path"].as<std::string>();

        }
    }
    catch (std::runtime_error &err)
    {
        std::cout << "Error: " << err.what() << std::endl;
    }
    catch (const boost::program_options::error &ex)
    {
        std::cerr << ex.what() << '\n';

    }

}

И я запускаю его внутри VS с помощью этой командной строки:

"C:\Temp\test\in" -o "C:\Temp\test\out"

приложение распечатать это:

0->C:\MyData\TestCodes\testBoostProgramOption\build\Debug\test.exe
1->C:\Temp\test\in
2->-o
3->C:\Temp\test\in

что кажется правильным, но я получаю эту ошибку:

option '--input-path' cannot be specified more than once

Что не так с кодом или параметрами программы?

0 ответов

Другие вопросы по тегам