Files
SimControl/libs/CLI11/book/chapters/an-advanced-example.md
Henry Winkel cc67e4840f Squashed 'libs/CommService/' content from commit 7ccc0fc
git-subtree-dir: libs/CommService
git-subtree-split: 7ccc0fce88bbc5969df060058cf0fb57abe3bcf9
2022-09-15 09:53:53 +02:00

1.2 KiB

Making a git clone

Let's try our hand at a little git clone, called geet. It will just print it's intent, rather than running actual code, since it's just a demonstration. Let's start by adding an app and requiring 1 subcommand to run:

include:"Intro"

Now, let's define the first subcommand, add, along with a few options:

include:"Add"

Now, let's add commit:

include:"Commit"

All that's need now is the parse call. We'll print a little message after the code runs, and then return:

include:"Parse"

Source code

If you compile and run:

gitbook:examples $ c++ -std=c++11 geet.cpp -o geet

You'll see it behaves pretty much like git.

Multi-file App parse code

This example could be made much nicer if it was split into files, one per subcommand. If you simply use shared pointers instead of raw values in the lambda capture, you can tie the lifetime to the lambda function lifetime. CLI11 has a multifile example in its example folder.