Centos7 C++ 安装使用googletest单元测试

颜啸
2023-12-01

  废话不多说,直接开始吧。
  
  环境说明
  
  系统环境:centos7.0
  
  g++ 版本:
  
  g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
  
  查看方法: g++ -version,升级方法 yum -y install g++
  
  由于最新的google test 有使用的是C++11+的函数,故而g++版本不能太低
  
  cmake安装: yum -y install cmake
  
  下载 google test 安装包:https://www.luqintang.com /google/googletest
  
  安装步骤(依次执行)
  
  mv googletest-master.zip  /home/software/;cd /home/software/
  
  unzip googletest-master.zip
  
  cd googletest-master
  
  cmake ./
  
  如果出错,可以查看cmake的版本是否过低,通过yum 方式或者手动安装cmake,cmake的安装包下载地址:https://cmake.org/
  
  make
  
  在安装过程中如果出错,检查环境的C++版本是否过低,若yum不能成功升级,可以选择手动安装(自行安装,此处不过多阐述)
  
  安装成功后,在./lib/目录下会生成:
  
  libgmock.a libgmock_main.a libgtest.a libgtest_main.a
  
  cp -r -v ./lib* /usr/lib/
  
  mkdir /usr/include/gtest; cp www.zhuyngyule.cn-r -v  /home/software/googletest-master/googletest/include/gtest/* /usr/include/gtest/
  
  到此安装基本完成,接下去就是简单使用说明了
  
  使用说明
  
  写一个小的cpp文件
  
  /*
  
  * alarm_test.cpp
  
  *
  
  * Created on: 2019年9月17日
  
  * Author: zhiyulinfeng
  
  */
  
  #include <stdio.h>
  
  #include <stdlib.h>
  
  #include <gtest/gtest.h>
  
  TEST(COutputPopLimitStrategyTest,PositiveNos){
  
  EXPECT_EQ(true,true);
  
  }
  
  int main(int argc,char *argv[]){
  
  ::testing::InitGoogleTest(&argc,argv);
  
  return RUN_ALL_TESTS();;
  
  }
  
  编译:g++ -std=c++11 alarm_test.cpp -lpthread /usr/lib/libgtest.a -o  alarm_test
  
  注意:加上-lpthread 因为在google test 内部用使用到线程,否则会报错
  
  注意2:千万记得加上 -std=c++11,环境问题比较纠结
  
  看下结果
  
  是不是很简单呢?感谢google,有了这个单元测试,妈妈再也不用担心我的程序会croe了。
  
  PS: 纯个人积累记录分享,未写清楚的可以留言和我交流。
  
  <!-- 引入样式 -->
  
  <link rel="stylesheet" href="https://www.pingguoyul.cn cdn.jsdelivr.net/npm/vant@2.2/lib/index.css">
  
  <!-- 引入组件 -->
  
  <script src=www.jintianxuesha.com"https://www.mingj2yl.com cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
  
  <script src=www.haojiangyule.com"https://www.hongshengyl.cn cdn.jsdelivr.net/npm/vant@2.2/lib/vant.min.js"></script>
  
  <script>
  
  var Vue =www.digpgtai.cn window.Vue;
  
  var vant =www.chaoyul.com window.vant;
  
  // 注册 Lazyload 组件
  
  Vue.use(vant.Lazyload);
  
  // 调用函数式组件
  
  vant.Toast('提示');
  
  </script>
  
  第二种:在main.js导入所有组件,当然也可以像插件那样提一个文件出来。
  
  import Vue from 'vue';
  
  import Vant from 'vant';
  
  import 'vant/lib/index.css';
  
  Vue.use(Vant);
  
  第三种:手动按需引入组件。
  
  import Button from 'vant/lib/button';
  
  import 'vant/lib/button/style';
  
  第四种:自动按需引入组件,这才是工程化的做法。
  
  # 安装插件
  
  npm i babel-plugin-import -D
  
  // 在 babel.config.js 中配置
  
  module.exports = {
  
  plugins: [
  
  ['import', {
  
  libraryName: 'vant',
  
  libraryDirectory: 'es',
  
  style: true
  
  }, 'vant']
  
  ]
  
  };
  
  // 插件会自动将代码转化为按需引入形式
  
  import { Button } from 'vant';
  
  由于我全项目依靠vant,所以,我使用了第二种方式,但这是不科学的,这个下一篇来讲。
  
  ## vw适配 ##
  
  前面介绍技术选型已经做了介绍,下面直接操作。
  
  # 安装依赖包
  
  npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano cssnano-preset-advanced postcss-import postcss-url --S
  
  // 配置postcss.config.js
  
  module.exports = {
  
  plugins: {
  
  "postcss-import": {},
  
  "postcss-url": {},
  
  "postcss-aspect-ratio-mini": {},
  
  "postcss-write-svg": {
  
  uft8: false
  
  },
  
  "postcss-cssnext": {},
  
  "postcss-px-to-viewport": {
  
  viewportWidth: 375,
  
  unitPrecision: 3,
  
  viewportUnit: 'vw',
  
  selectorBlackList: ['.ignore', '.hairlines'],
  
  minPixelValue: 1,
  
  mediaQuery: false
  
  },
  
  "postcss-viewport-units": {
  
  "silence": true
  
  },
  
  "cssnano": {
  
  preset: 'advanced',
  
  autoprefixer: false,
  
  "postcss-zindex": false
  
  }
  
  }
  
  }
  
  viewportWidth我配置的375,iphone6设计图,按1倍图处理,因为很多库是使用的1倍图的实际像素来进行适配的。如果不想转换直接使用1倍图像素,可以在selectorBlackList加入'van'来屏蔽转换,'van'是vant库所有样式的前缀。
  
  最后解决vw适配的兼容问题,这个polyfill原理很简单,相当于将vw单位还原为该分辨率的实际像素。
  
  <script src="<%= BASE_URL %>js/viewport-units-buggyfill.min.js"></script>
  
  <script src="<%= BASE_URL %>js/viewport-units-buggyfill.hacks.min.js"></script>
  
  <script>window.οnlοad=function(){window.viewportUnitsBuggyfill.init({hacks:window.viewportUnitsBuggyfillHacks})}</script>
  
  这儿需要注意的是不能使用字体图标,字体图标使用content来完成的,这个polyfill也使用了content。我不解的是postcss-px-to-viewport也使用了,却没有影响。其实,并不建议使用字体图标,字体图标通常包含很大的资源。
  
  最后
  
  这只是技术选型上的配置,配置还并没有完成,比如接口请求封装、打包处理等等。
  
  # 跑下代码
  
  npm run serve

 类似资料: