cpp集成gflags

简介

gflags 是 Google 开源的命令行参数解析库,主要用于 C++项目中提供灵活、强大的命令行参数定义与解析功能

gflags 通过宏定义全局变量并自动处理命令行参数传参,例如DEFINE_int32(port, 8080, "Port to listen on");

更多用法:How To Use gflags (formerly Google Commandline Flags)

简单集成

项目结构:

.
├── build
├── CMakeLists.txt
├── main.cpp
└── vendor

输出

git clone https://github.com/gflags/gflags.git vendor/gflags

CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)
project(test)

set(CMAKE_CXX_STANDARD 17)

add_subdirectory(vendor/gflags)

add_executable(test main.cpp)

target_link_libraries(test gflags)

main.cpp 文件:

#include <iostream>
#include "gflags/gflags.h"

DEFINE_bool(debug, false, "Enable debug mode");
DEFINE_int32(port, 8080, "Listening port");

int main(int argc, char** argv) {
    gflags::SetUsageMessage("Usage: ./test [options]");
    gflags::ParseCommandLineFlags(&argc, &argv, true);

    std::cout << "Debug mode: " << (FLAGS_debug ? "ON" : "OFF") << std::endl;
    std::cout << "Listening on port: " << FLAGS_port << std::endl;

    return 0;
}

运行

无参数运行:

./test
Debug mode: OFF
Listening on port: 8080

带参数运行:

./test --port=10086
Debug mode: OFF
Listening on port: 10086

查看帮助:

./test --help
test: Usage: ./test [options]

  Flags from /home/vv/tmp/cpp_gflags/main.cpp:
    -debug (Enable debug mode) type: bool default: false
    -port (Listening port) type: int32 default: 8080

comment: