• gFlags 测试与使用


    github https://github.com/gflags/gflags
    使用手册: https://gflags.github.io/gflags/

    使用示例:
    cmakelist:

    cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
    project(test_gflags)
     
    SET(CMAKE_BUILD_TYPE Debug)
     
    #gflags
    include_directories(/data_2/lib/gflags/include/)
    link_directories(/data_2/lib/gflags/lib)
    
    add_executable(main main.cpp)
    target_link_libraries(main gflags)
    set_property(TARGET main PROPERTY CXX_STANDARD 11)
    

    main.cpp

    #include<iostream>
    #include "gflags/gflags.h"
    using namespace std;
    
    DEFINE_bool(b_ok, true, "true or false");
    DEFINE_string(languages, "english,french,german",
                  "comma-separated list of languages to offer in the 'lang' menu");
    DEFINE_int32(size,1000,"size");
    
    int main(int argc, char** argv)
    {
        google::ParseCommandLineFlags(&argc, &argv, true);
        std::cout << "FLAGS_b_ok=" << FLAGS_b_ok << std::endl;
        std::cout <<"FLAGS_languages=" << FLAGS_languages << std::endl;
        std::cout <<"FLAGS_size=" << FLAGS_size << std::endl;
    
    
        return 0;
    }
    

    直接运行输出如下:

    FLAGS_b_ok=1
    FLAGS_languages=english,french,german
    FLAGS_size=1000
    

    终端命令运行:

    ./main --b_ok=false --languages="chinese" --size=90
    FLAGS_big_menu=0
    FLAGS_languages=chinese
    FLAGS_languages=90
    
    
    
    $ ./main --b_ok=false --languages="chinese" --size=90 --he=1
    ERROR: unknown command line flag 'he'
    

    gflags 暂时支持如下参数的类型:

    DEFINE_bool: boolean
    DEFINE_int32: 32-bit integer
    DEFINE_int64: 64-bit integer
    DEFINE_uint64: unsigned 64-bit integer
    DEFINE_double: double
    DEFINE_string: C++ string
    

    访问参数

    通过 FLAGS_name 像正常变量一样访问标志参数。比如代码中:
    FLAGS_b_ok
    FLAGS_languages
    FLAGS_size

    初始化所有参数 google::ParseCommandLineFlags(&argc, &argv, true);

    定义好参数后,最后要告诉执行程序去处理命令行传入的参数,使得 FLAGS_*参数们得到正确赋值。
    通常是再main()函数中调用;
    google::ParseCommandLineFlags(&argc, &argv, true);
    argc和argv就是 main 的入口参数,因为这个函数会改变他们的值,所以都是以指针传入。
    第三个参数被称为remove_flags。如果它是true,ParseCommandLineFlags会从argv中移除标识和它们的参数,相应减少argc的值。然后 argv 只保留命令行参数。
    相反,remove_flags是false,ParseCommandLineFlags会保留argc不变,但将会重新调整它们的顺序,使得标识再前面。

    好记性不如烂键盘---点滴、积累、进步!
  • 相关阅读:
    C#中Bitmap类实现对图像操作的一些方法
    C# GDI+ 文字操作
    C#中使用GDI+实现复杂打印
    【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分
    【Python爬虫】selenium基础用法
    【Python爬虫】PyQuery解析库
    【Python爬虫】BeautifulSoup 解析库
    【Python爬虫】正则表达式与re模块
    【Python爬虫】Requests库的基本使用
    【Python基础】*args,**args的详细用法
  • 原文地址:https://www.cnblogs.com/yanghailin/p/15788671.html
Copyright © 2020-2023  润新知