废话不多说,直接开始吧。
环境说明
系统环境: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