# GFlags

### Installation in Ubuntu

```bash
sudo apt install libgflags-dev
```

### Usage in CMake

```bash
# gflags
find_package(GFlags REQUIRED)  # gflags-config.cmake available
include_directories(${GFLAGS_INCLUDE_DIR}) # not DIRS

add_executable (main src/main.cpp)
target_link_libraries (main ${GFLAGS_LIBRARIES})
```

### Tutorial

* [GFlags Documentation](https://gflags.github.io/gflags/) ([CMake section](https://gflags.github.io/gflags/#cmake))
* All DEFINE macros take the same three arguments: the name of the flag, its default value, and a 'help' string that describes its use. The 'help' string is displayed when the user runs the application with the `--help` flag.

```cpp
#include <gflags/gflags.h>
DEFINE_string(config, "./config/default.yaml", "config file path");
int main(int argc, char **argv) {
    google::ParseCommandLineFlags(&argc, &argv, true);
    myslam::VisualOdometry::Ptr vo(new myslam::VisualOdometry(FLAGS_config));
    ...
}

// in visual_odometry.h
VisualOdometry(std::string &config_path);
```
