docopt.cpp 项目使用教程
docopt.cppC++11 port of docopt项目地址:https://gitcode.com/gh_mirrors/do/docopt.cpp
1. 项目的目录结构及介绍
docopt.cpp 项目的目录结构如下:
docopt.cpp/
├── CMakeLists.txt
├── LICENSE-Boost-1.0
├── LICENSE-MIT
├── README.md
├── docopt.cpp
├── docopt.h
├── docopt_util.h
├── docopt_value.h
├── docopt_private.h
├── docopt_args.h
├── docopt_errors.h
├── docopt_parser.h
├── docopt_pattern.h
├── docopt_tests.cpp
└── example.cpp
主要文件介绍:
CMakeLists.txt
: 用于构建项目的 CMake 配置文件。LICENSE-Boost-1.0
和LICENSE-MIT
: 项目许可证文件。README.md
: 项目说明文档。docopt.cpp
和docopt.h
: 核心实现文件,包含命令行解析的主要逻辑。docopt_util.h
,docopt_value.h
,docopt_private.h
,docopt_args.h
,docopt_errors.h
,docopt_parser.h
,docopt_pattern.h
: 辅助头文件,包含各种辅助函数和数据结构。docopt_tests.cpp
: 测试文件,用于测试命令行解析的正确性。example.cpp
: 示例文件,展示如何使用 docopt.cpp 解析命令行参数。
2. 项目的启动文件介绍
项目的启动文件是 example.cpp
,它展示了如何使用 docopt.cpp 解析命令行参数。以下是 example.cpp
的示例代码:
#include "docopt.h"
#include <iostream>
static const char USAGE[] =
R"(Naval Fate.
Usage:
naval_fate ship new <name>...
naval_fate ship <name> move <x> <y> [--speed=<kn>]
naval_fate mine (set|remove) <x> <y> [--moored | --drifting]
naval_fate -h | --help
naval_fate --version
Options:
-h --help Show this screen.
--version Show version.
--speed=<kn> Speed in knots [default: 10].
--moored Moored (anchored) mine.
--drifting Drifting mine.
)";
int main(int argc, const char** argv) {
std::map<std::string, docopt::value> args = docopt::docopt(USAGE,
{ argv + 1, argv + argc },
true, // show help if requested
"Naval Fate 2.0"); // version string
for (auto const& arg : args) {
std::cout << arg.first << ": " << arg.second << std::endl;
}
return 0;
}
主要功能:
- 定义了一个命令行接口的用法字符串
USAGE
。 - 使用
docopt::docopt
函数解析命令行参数,并返回一个键值对映射args
。 - 遍历并打印解析后的参数。
3. 项目的配置文件介绍
项目的配置文件是 CMakeLists.txt
,它用于配置和构建项目。以下是 CMakeLists.txt
的主要内容:
cmake_minimum_required(VERSION 3.1)
project(docopt.cpp)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(docopt STATIC
docopt.cpp
docopt.h
docopt_util.h
docopt_value.h
docopt_private.h
docopt_args.h
docopt_errors.h
docopt_parser.h
docopt_pattern.h
)
add_executable(example example.cpp)
target_link_libraries(example docopt)
enable_testing()
add_executable(docopt_tests docopt_tests.cpp)
target_link_libraries(docopt_tests docopt)
add
docopt.cppC++11 port of docopt项目地址:https://gitcode.com/gh_mirrors/do/docopt.cpp