gflag的编译和使用

gflag的编译和使用

概述

glog的新版(>4.0)一定要包含gflag(因为要设置一些glog内部变量, 否则无法保存成日志文件), 否则不能正常使用。
先将gflag编译出来。

笔记

库地址 https://github.com/gflags/gflags.git
迁出到本地,切到最新的发布版 Release v2.2.2

CMake用的3.29, 编译旧版CMakeLists.txt有版本警告。
将CMakeLists.txt中的最小版本改了。

在这里插入图片描述
用cmake-gui.exe编译
只生成dll, 不生成静态库工程。
原因是gflag是多字节工程,无法作为静态库包含在默认的unicode工程中用。
在这里插入图片描述

选择为VS2019x64, 配置,产生工程
打开 gflags.sln
在这里插入图片描述
分别编译Debug/release版,给自己的Debug/Realse APP用。
如果自己的Debug版APP包含gflag的Release版dll, 会报错,有异常发生。
在这里插入图片描述
全部编译
运行测试(重新生成RUN_TESTS), 看到测试100%通过。
在这里插入图片描述
安装(重新生成INSTALL工程)
在这里插入图片描述
得到发布包
在这里插入图片描述
这时,就可以将发布包存档,分别命令为gflags_x64_debug/gflags_x64_release然后包进自己工程用。

官方文档

https://gflags.github.io/gflags/

测试工程

vs2019

// testGflagsConsole.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

#define STRIP_FLAG_HELP 1

#include "gflags/gflags.h"

#if (defined(_WIN64) && defined(_DEBUG))
    #pragma comment(lib, "gflags_nothreads_debug.lib")
    #pragma comment(lib, "gflags_debug.lib")
#elif (defined(_WIN64) && defined(NDEBUG))
    #pragma comment(lib, "gflags_nothreads.lib")
    #pragma comment(lib, "gflags.lib")
#endif

DECLARE_string(message1); // 声明其他文件定义的变量, 如果要用到,其他文件中就要有对应的DEFINE_x, 否则编译报错
DEFINE_string(message, "val", "text"); // 自己作用域定义的变量

using GFLAGS_NAMESPACE::SetUsageMessage;
using GFLAGS_NAMESPACE::ParseCommandLineFlags;

int main(int argc, char** argv) {
    SetUsageMessage("Usage message");
    ParseCommandLineFlags(&argc, &argv, false);
    printf("%s\n", FLAGS_message.data());
    return 0;
}

END

相关推荐

  1. 如何使用gflags.exe查看内存来源

    2024-05-09 13:14:01       55 阅读
  2. ubuntu18使用docker编译运行步骤

    2024-05-09 13:14:01       62 阅读
  3. ubuntu thrift 编译使用

    2024-05-09 13:14:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 13:14:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 13:14:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 13:14:01       87 阅读
  4. Python语言-面向对象

    2024-05-09 13:14:01       96 阅读

热门阅读

  1. Leetcode 199:二叉树的右视图

    2024-05-09 13:14:01       31 阅读
  2. Vue 组件参数传递:多个参数 vs 单个对象

    2024-05-09 13:14:01       34 阅读
  3. vue后端api开发

    2024-05-09 13:14:01       34 阅读
  4. CGAL在ubuntu下的安装及Hello World的测试

    2024-05-09 13:14:01       29 阅读
  5. 1700.无法吃午餐的学生数量

    2024-05-09 13:14:01       36 阅读
  6. Springboot-Jedis实现分布式锁

    2024-05-09 13:14:01       40 阅读
  7. shell_结束进程脚本

    2024-05-09 13:14:01       34 阅读
  8. deepspeed+transformers模型微调

    2024-05-09 13:14:01       29 阅读
  9. docker无法映射/挂载根目录

    2024-05-09 13:14:01       34 阅读
  10. 【算法刷题day46】Leetcode:139. 单词拆分

    2024-05-09 13:14:01       36 阅读