Win10系统VS2019+Cmake+gflags2.2.2环境配置

2023-11-15

1. gflags

1.1 简要介绍

gflagsgoogle开源的一套命令行参数解析工具,使用C++开发,具备Python接口,可以替代getoptgflags使用起来比getopt方便,但是不支持参数的简写(例如getopt支持–list缩写成-lgflags不支持)。

1.2 依赖库

gflags不需要再配置其他库。

1.3 源码包下载

gflags源码地址:
githubhttps://github.com/gflags/gflags.git

2. Cmake构建项目

2.1 路径

源代码路径:D:/ThirdParty/gflags/gflags_3.3.8
构建项目路径:D:/ThirdParty/gflags/gflags_3.3.8_build

2.2 构建选项

名称 备注
BUILD_TESTING false 减少编译时间
CMAKE_INSTALL_PREFIX path 编译时生成的安装文件路径
BUILD_SHARED_LIBS true 生成dll动态库

2.3 构建项目

image.png
步骤如下:

  1. 指定源码路径;
  2. 指定构建项目路径;
  3. 点击Configure
  4. 按照2.2节表中的值进行设置;
  5. 再次点击Configure
  6. 点击Generate,构建项目路径中将生解决方案文件gflags.sln

点击ConfigureGenerate后,如果顺利,会出现Configuring doneGenerating done

3. 打开解决方案并编译

3.1 编译解决方案

点击Open Project(或者在2.3节步骤2中指定的构建项目路径中,找到生成的解决方案文件gflags.sln,通过Visual Studio打开),打开通过Cmake构建的项目;
选中ALL_BUILD项目,分别在DebugRelease模式下,重新生成解决方案。
image.png

3.2 安装gflags

image.png
选中INSTALL项目,右击,重新生成,此时,将会在指定路径下(2.2节表中CMAKE_INSTALL_PREFIX选项的值)生成3个文件夹includelibbin

4. 实际项目环境配置

注:以下通过属性表的方式进行环境配置。

4.1 附加包含目录

image.png

  1. $(gflags)\include

$(gflags)(在系统环境变量中添加并设置)就是2.2节表中CMAKE_INSTALL_PREFIX选项的值。

4.2 附加库目录

image.png

  1. $(gflags)\lib

4.3 附加依赖项

image.png

  1. gflags_debug.libgflags.lib
  2. gflags_nothreads_debug.libgflags_nothreads.lib

将库目录$(gflags)\lib中文件后缀名为.lib的文件依次添加至附加依赖项中,并依次配置debug版本(有_debug后缀)和release版本。

注意,添加附加依赖项时,不要漏掉文件后缀名.lib

4.4 动态库

将动态库目录添加至系统环境变量Path,步骤如下:

  1. 计算机右击,点击“属性”;
  2. 点击“高级系统设置”;
  3. 点击“环境变量”;
  4. 双击Path
  5. 添加%fglags%\bin,该目录下是包含了动态库文件。

image.png
image.png

本文使用的都是相对路径,因此需事先设置好环境变量gflags,值为CMAKE_INSTALL_PREFIX对应的目录,也可以使用绝对路径。

image.png

4.2 测试代码

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

DEFINE_int32(port, 111, "Host name");

//检查函数,检查函数是否符合要求
static bool ValidatePort(const char* name, int32_t val)
{
	if (val > 0 && val < 2000)
		return true;
	std::cout << "Invalid value for --" << name << ": " << val << std::endl;
	return false;
}


// 使用全局 static 变量来注册函数,static 变量会在 main 函数开始时就调用
//必须在main开始时进行注册,否则无法监测命令行参数
static const bool port_dummy = gflags::RegisterFlagValidator(&FLAGS_port, &ValidatePort);

int main(int argc, char** argv)
{
	//初始化参数
	gflags::ParseCommandLineFlags(&argc, &argv, true);		
	std::cout << "the server port is: " << FLAGS_port << std::endl;
	// 使用 SetCommandLineOption 函数对参数进行设置才会调用检查函数
	gflags::SetCommandLineOption("port", "-3");
	std::cout << "the server port is: " << FLAGS_port << std::endl;

	//std::system("pause");
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win10系统VS2019+Cmake+gflags2.2.2环境配置 的相关文章

随机推荐

  • STM32F4——ADC学习笔记

    OVR溢出错误 最近调试一个板子 使用ADC1采集多个通道 然后DMA传输到对应数组里 模仿STM32F1的写法后 一直出现OVR错误 溢出 网上看了各位大神的分析 里面有个比较关键的说DMA溢出 需要判断溢出的时候 重新配置DMA和再次启
  • ST-GCN论文分析

    Introduction 传统的骨架建模方法通常依赖手工制作的零件或遍历规则 因此表达能力有限 难以推广 新的动态骨架模型 通过自动从数据中学习时空模式 超越了以往方法的局限性 该公式不仅有更强的表达能力 而且有更强的泛化能力 早期使用骨架
  • IDEA Java1.8通过sqljdbc4连接sqlserver插入语句

    1 下载sqljdbc4 https mvnrepository com artifact com microsoft sqlserver jdbc sqljdbc4 4 0 下载后在IDEA放入仓库内 可以放在resources下 右键
  • 【Java基础】day14

    day14 一 什么是 RESTful 架构 REST 全称是 Representational State Transfer 中文意思是表征性状态转移 它首次出现在 2000 年 Roy Fielding 的博士论文中 Roy Field
  • 数据结构:时间复杂度汇总

    顺序表 插入操作 平均移动n 2个元素 则时间复杂度为O n 表尾插入 时间复杂度为O 1 删除操作 顺序表中删除任意一个元素 平均需要有 n 1 2个元素移动 时间复杂度为O n 查找操作 平均比较次数 n 1 2 时间复杂度为O n 数
  • Beyond Compare4到期

    到期后 删除注册表下的 计算机 HKEY CURRENT USER SOFTWARE Scooter Software Beyond Compare 4下的CacheID文件 试用期重新计算 打开注册表 win r 输入regedit
  • rollback-only异常令我对事务有了新的认识

    背景 环境 相关环境配置 SpringBoot PostGreSQL Spring Data JPA 问题 两个使用 Transaction 注解的 ServiceA 和 ServiceB 在 A 中引入了 B 的方法用于更新数据 当 A
  • 虚拟机配置NAT网络

    如果你的网络ip资源紧缺 但是你又希望你的虚拟机能够联网 这时候NAT模式是最好的选择 NAT模式借助虚拟NAT设备和虚拟DHCP服务器 使得虚拟机可以联网 其网络结构如下图所示 这个地方一定要将 主机网卡和虚拟网卡VMnet8地址设置成不
  • Linux中下载Redis

    1 在Redis版本库 https download redis io releases 可根据自己的需求选择下载对应的版本 然后直接下载 2 上传到linux里面 3 解压安装包 4 进入文件 打开文件 查看文件 5 进行编译 6 安装完
  • Springboot2.7.5版本升级2.7.8Redis启动报错

    项目从Springboot2 7 5升级到Springboot2 7 8的时候 启动时redis报错 报错如下 org springframework beans factory UnsatisfiedDependencyException
  • 网络拓扑配置案例练习(VRRP,浮动路由,DHCP,三层交换机配置)

    网络拓扑配置案例 网络拓扑配置案例练习 网络拓扑 需求描述 具体操作命令 交换机创建vlan 配置access trunk口 划分vlan vrrp配置 路由配置 验证vrrp和浮动路由 DHCP配置 总结 网络拓扑配置案例练习 在这篇文章
  • 线性空间和线性变化

    目录 考点一 线性空间的基与维数 1 线性空间 2 基底 3 子空间 线性子空间 编辑4 生成子空间 1 v1 n v2 2 v1 v2 5 求和子空间的方法 6 维数定理 7 例题 1 例1 1 考点二 证明线性变换 1 变换 2 线性变
  • SpringBoot 配置404页面

    SpringBoot 配置404页面 项目环境 服务器 centos 前端 Vue 后端 SpringBoot 出现的问题 访问一个不存在的页面时 会出现tomcat自带的404界面 这个界面对于用户不太友好 解决方案 1 自己写好404页
  • 有效解决C# Random生成随机数重复的问题

    在Random生成随机数的时候 如果短时间内连续生成随机数 就会导致生成的随机数相同 下面我们介绍如何解决在 短时间内生成随机数的时候 如何避免随机数不一样的问题 实例下载链接 http download csdn net download
  • FPGA——浅谈跨时钟域

    本篇文章仅用于个人学习 如有雷同 我抄他的 跨时钟域是每个FPGA初学者都会遇到的问题 跨时钟域分情况有以下几种 单bit跨时钟域 慢时钟域到快时钟域 快时钟域到慢时钟域 多bit跨时钟域 单bit跨时钟域 慢时钟域到快时钟域 首先谈谈单b
  • 华为OD机试真题 Java 实现【快速开租建站】【2023Q1 200分】,附详细解题思路

    一 题目描述 当前IT部门支撑了子公司颗粒化业务 该部门需要实现为子公司快速开租建站的能力 建站是指在一个全新的环境部署一套IT服务 每个站点开站会由一系列部署任务项构成 每个任务项部署完成时间都是固定和相等的 设为1 部署任务项之间可能存
  • Java正则表达式工具类

    import org apache commons lang3 StringUtils import org slf4j Logger import org slf4j LoggerFactory import java lang refl
  • Altium designer20(AD20)安装教程

    一 教程是基于本人在安装过程中的截图 步骤都非常详细 PDF教程文档 AD 20安装 提取码 u8mm AD20下载链接 AD20安装包 提取码 v7t6
  • KDD Cup竞赛介绍

    转自 http huzhyi21 blog 163 com blog static 1007396200981534952541 KDD Cup简介 KDD Cup is the annual Data Mining and Knowled
  • Win10系统VS2019+Cmake+gflags2.2.2环境配置

    1 gflags 1 1 简要介绍 gflags是google开源的一套命令行参数解析工具 使用C 开发 具备Python接口 可以替代getopt gflags使用起来比getopt方便 但是不支持参数的简写 例如getopt支持 lis