近期在学习Ubuntu上cpp编程的内容,整理以下VSCode与cpp相关的开发环境部署内容,以及gtest测试(后面看一下如何进行覆盖度测试)
准备工作
OS: Ubuntu 16.04 LTS
步骤:
- 配置VSCode开发环境
- 安装GTest
- 项目实例
1. 配置VSCode开发环境
1.1 安装VSCode
这里采用是从
VScode官网
下载.deb文件进行安装。
安装完成后,打开VSCode,主界面如下:
1.2 插件配置
通过左侧的Extension安装插件,操作如下
需要安装的插件有
C/C++ (Microsoft)
CMake Tools(Microsoft)
GitLens(Eric Amodio)
2. CMake安装与测试
2.1 CMake安装
我的笔记本中已经安装了cmake,因此这部分没有进行安装测试。
在terminal下键入依次以下命令进行CMake的安装
wget https://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.tar.gz
tar -xvf cmake-3.14.5.tar
cd cmake-3.14.5
./bootstrap
make
make install
个人的偏好,如果要一键安装,可将上述的语句写入到一个install_cmake.sh的文件中,chmod为777.
执行结束后,在terminal中执行
cmake --version
查看安装版本号。
2.2 CMake测试
在VSCode中打开一个新建的Folder,并新建
main.cpp
文件,内容很简单,hello world。
#include <iostream>
using namespace std;
int main(){
cout<<"Hello World!"<<endl;
return 0;
}
按【F1】后进行CMake的配置
选择一个编译器,这里我选择了GCC for x86_64-linux-gnu 5.4.0
选择结束后,右侧提示CMakeLists.txt还不存在,需要创建一个CMakeLists.txt,点击Create创建,在上方填入项目名,选择executable,回车即可,生成的CMakeLists.txt如下所示
cmake_minimum_required(VERSION 3.0.0)
project(Project VERSION 0.1.0)
include(CTest)
enable_testing()
add_executable(Project main.cpp)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
按【F7】进行编译,编译结束后,在build路径下执行
./Project
,可以看到输出了Hello World!
3. GTest安装与测试
3.1 GTest安装
# 下载最新的release 并保存为 googletest-1.8.1.tar.gz
wget -O googletest-1.8.1.tar.gz https://github.com/google/googletest/archive/release-1.8.1.tar.gz
# 解压
tar -zxf googletest-1.8.1.tar.gz
# 进入解压后的目录
cd googletest-release-1.8.1
# 为编译创建一个目录
mkdir build && cd build
cmake ..
make
# 安装
sudo make install
3.2 GTest测试
#include <gtest/gtest.h>
int add(int a, int b){
return a+b;
}
TEST(testCase, test0){
EXPECT_EQ(add(2,3),5);
}
int main(int argc, char **argv){
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
执行下列命令
g++ test.cpp -lgtest -lpthread
./a.out
整体配置
项目的大致结构简单定义如下
├── CMakeLists.txt
├── main.cpp
├── src
│ └── myproject
│ └── myclass.hpp
└── test
├── CMakeLists.txt
└── test_my_class.cpp
挖坑,这周补上。
这里参考https://blog.csdn.net/joelcat/article/details/90766192