摘要:
这篇笔记主要是把在VS属性页中的设置直接放在CMakeLists.txt文件中,即构建项目后不需要打开sln文件进行设置
环境准备: CMake+Visual Studio
依赖项:gtestd.lib+gtest_maind.lib(使用GTest的源码在Debug模式下编译出的lib文件)
源码:
addIntegers.h
#pragma once
#include <iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
test.cpp
#include <gtest/gtest.h>
#include"addIntegers.h"
TEST(testCase,test0)
{
EXPECT_EQ(3,add(1,2));
}
TEST(testCase, test1)
{
EXPECT_EQ(11, add(12, 3));
}
Project1.cpp
#include <iostream>
#include <gtest/gtest.h>
int main(int argc,char **argv)
{
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
CMakeLists.txt
# set minimum cmake version
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
# project name and language
project(demo1 LANGUAGES CXX)
# require C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# VS项目属性页->C/C++->代码生成->运行库->多线程调试(/MTd)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
# 类似宏定义,将两个路径变成两个变量
set(Include_path
D:/workspace/GoogleTest/googletest-release-1.10.0/googletest-release-1.10.0/googletest/include
)
set(Lib_path
D:/workspace/GoogleTest/googletest-release-1.10.0/googletest-release-1.10.0/googletest/build/lib/Debug
)
# VS项目属性页->C/C++->常规->附加包含目录
include_directories(${Include_path})
# 指定附加依赖项的目录
link_directories(${Lib_path})
add_executable(sum_up test.cpp addIntegers.h Project1.cpp)
# VS项目属性页->链接器->输入->附加依赖项
target_link_libraries(sum_up gtestd)
target_link_libraries(sum_up gtest_maind)
执行过程:
1.将源码按下列方式排列
.
├── addIntegers.h
├── CMakeLists.txt
├── Project1.cpp
├── test.cpp
2.在源码目录下进入PowerShell,执行cmake指令
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .
$ cd debug
$ ./sum_up
3.命令执行过程截图
注:
在执行完cmake …后可以打开构建出的sln文件,查看设置的项目属性是否成功;
在执行完cmake --build .后可以查看Debug文件夹下有没有生成相应的可执行文件来间接判断生成是否成功
内容如有错误,敬请指正!