ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

gFlags 测试与使用

2022-01-11 16:02:31  阅读:305  来源: 互联网

标签:gFlags -- gflags languages FLAGS 测试 使用 main DEFINE


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/project_202009/chejian/3rdparty/3rdparty_1070_cuda8_16.04/gflags/include/)
link_directories(/data_2/project_202009/chejian/3rdparty/3rdparty_1070_cuda8_16.04/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不变,但将会重新调整它们的顺序,使得标识再前面。

标签:gFlags,--,gflags,languages,FLAGS,测试,使用,main,DEFINE
来源: https://www.cnblogs.com/yanghailin/p/15788671.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有