gflags安装和使用

介绍

gflags 是一个用于C++程序的命令行标志库,帮助程序员定义和处理命令行参数。它主要用于简化程序的配置,使得参数解析变得更加方便和高效。

主要特点

  1. 易用性: 提供了简单的接口来定义和使用命令行标志。
  2. 支持多种类型: 支持各种标志类型,如布尔型、整数型、浮点型、字符串型等。
  3. 默认值: 可以为标志设置默认值,允许用户在不提供值时使用默认值。
  4. 描述性: 允许为标志提供描述,生成帮助信息,便于用户理解各个参数的作用。
  5. 自动生成帮助信息: 可以自动生成程序的帮助文档,显示所有定义的标志及其默认值和描述。

安装

下载源码

地址: https://github.com/gflags/gflags
克隆下来

git clone --branch=v2.2.2 --single-branch --depth=1 https://github.com/gflags/gflags.git

linux安装

cd gflags
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DGFLAGS_BUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF ..
make
sudo make install

这里编译成静态库,如果想编译成动态库把 -DBUILD_SHARED_LIBS=OFF 去掉

安装完成!

windows安装

使用cmake-gui
在这里插入图片描述
进入vs目录,点击gflags.sln
根据需要生成debug和release版本
在这里插入图片描述
编译成功,生成

gflags_nothreads_static.lib
gflags_static.lib

在程序中多线程使用 gflags_static.lib , 单线程使用 gflags_nothreads_static.lib

至此安装完成.

使用

定义标志:

#include <gflags/gflags.h>

DEFINE_bool(verbose, false, "Print verbose output");
DEFINE_int32(port, 8080, "Port number for the server");
DEFINE_string(config_file, "config.txt", "Path to the configuration file");

在这个示例中,我们定义了三个标志:

  • –verbose (布尔型,默认值为 false)
  • –port(整数型,默认值为 8080)
  • –config_file(字符串型,默认值为 config.txt)

解析命令行参数:

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

DEFINE_bool(verbose, false, "Print verbose output");
DEFINE_int32(port, 8080, "Port number for the server");
DEFINE_string(config_file, "config.txt", "Path to the configuration file");

int main(int argc, char* argv[]) {
    google::ParseCommandLineFlags(&argc, &argv, true);

    if (FLAGS_verbose) {
        std::cout << "Verbose mode is enabled" << std::endl;
    }
    std::cout << "Port: " << FLAGS_port << std::endl;
    std::cout << "Config file: " << FLAGS_config_file << std::endl;

    return 0;
}

从文件中解析

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

DEFINE_bool(verbose, false, "Print verbose output");
DEFINE_int32(port, 8080, "Port number for the server");
DEFINE_string(config_file, "config.txt", "Path to the configuration file");

int main(int argc, char* argv[]) {
    google::ReadFromFlagsFile("./config/config.conf", argv[0], true);
    
    if (FLAGS_verbose) {
        std::cout << "Verbose mode is enabled" << std::endl;
    }
    std::cout << "Port: " << FLAGS_port << std::endl;
    std::cout << "Config file: " << FLAGS_config_file << std::endl;

    return 0;
}

config/config.conf

 --verbose=true
 --port=8080
 --config_file=config.json

保证路径正确

编译和运行:

确保在编译时链接 gflags 库,例如使用 g++:

g++ -o my_program my_program.cpp -lgflags

运行程序时,你可以通过命令行参数来设置标志:

./my_program --verbose --port=9090 --config_file=my_config.txt

其他文件引用已定义标志

#include <gflags/gflags.h>

DECLARE_bool(verbose);
DECLARE_int32(port);
DECLARE_string(config_file);

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值