本文仅介绍Code::Blocks+gtest环境配置,gtest具体使用方法请参考:

玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

环境概要

  • Code::Blocks 13.12
  • Windows 8.1
  • gtest-1.7.0

说明

gtest是一个优秀的开源C++单元测试框架,详细介绍可以参考官方网站。由于某种原因需要在Windows下使用Code::Blocks进行C++开发,特将配置过程进行记录以备之后查阅。

下载安装Code::Blocks,官方网址是http://www.codeblocks.org/,我下载的是codeblocks-13.12mingw-setup.exe版本,由于Code::Blocks的安装比较简单,这里我就不多说了,相信大家看此文章的目的不是查阅Code::Blocks的安装说明。

下载gtest,官方网站是https://code.google.com/p/googletest/,我下的是gtest-1.7.0.zip版本,下载完成之后进行解压,我解压的目录是E:\ gtest-1.7.0\

下载安装CMake,CMake是跨平台的构建工具,官方网站是http://www.cmake.org,我下载的是cmake-3.2.1-win32-x86.exe,安装之后运行cmake-gui,配置源代码目录(之前解压的gtest目录)和要build到的目标目录。可以参考如下截图,但目录设置要根据自己的环境进行配置。

单击Configure,出现如下对话框,按照下图选择合适选项:

单击Finish,会在目标目录产生MinGW Makefiles,之后会出现下图:

选中gtest_disable_pthreads一项,单击Generate,即会产生Code::Blocks工程文件(.cbp)。

用Code::Blocks打开该文件,直接进行编译,会在目标目录产生两个库文件:

  • libgtest.a
  • libgtest_main.a

此时gtest的编译工作就完成了,用Code::Blocks新建工程目录gtest,在maim.h中写入如下代码:

#include<cstdio>
#include<gtest/gtest.h>
int add(int a, int b)
{
return a+b;
}
TEST(addtest, HandleNoneZeroInput)
{
EXPECT_EQ(14, add(4, 10));
EXPECT_EQ(-2, add(-3, 1));
}
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}

将gtest源代码目录中的include中的文件拷贝到工程目录中的include文件夹中,将之前build生成的两个文件拷贝到工程目录中的lib文件夹中。右键project,选择Build options...,在Linker settings > Other linker options下填写-lgtest。点击选项卡Search directories,在Compiler子选项卡中Add一项,加入include目录,在Linker子选项卡中Add一项,加入lib目录。点击OK

此时build工程如果成功会出现以下结果:

如果工程中想使用C++11的新特征,得用命令行参数-std=gnu++11,而不是-std=c++11。具体做法是右键project,选择Build options...,清除Compiler settings > Compile Flags下与-std=有关的复选框,点击选项卡Compiler settings > Other options,在对话框中填写-std=gnu++11。如果直接使用-std=c++11等选项会出现以下错误:

include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::StrCaseCmp(const char*, const char*)':
include/gtest/internal/gtest-port.h:1719:25: error: '_stricmp' was not declared in this scope
include/gtest/internal/gtest-port.h: In function 'char* testing::internal::posix::StrDup(const char*)':
include/gtest/internal/gtest-port.h:1721:58: error: '_strdup' was not declared in this scope
include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::FileNo(FILE*)':
include/gtest/internal/gtest-port.h:1729:52: error: '_fileno' was not declared in this scope
include/gtest/internal/gtest-port.h: In function 'FILE* testing::internal::posix::FDOpen(int, const char*)':
include/gtest/internal/gtest-port.h:1779:71: error: 'fdopen' was not declared in this scope

另外,如果你的project的build option中已经清除Compiler settings > Compile Flags下与-std=有关的复选框,但还是出现这个问题,可能原因是你的global设置有问题,你可以查看Settings->Complier选项卡是否也设置正确,如果没有请正确设置。

Code Blocks+gtest环境配置的更多相关文章

  1. win7下code::blocks开发环境

    一.环境配置步骤: 下载安装code::blocks; 下载安装MinGW; 在complier settings中, Toolchain executables选择MinGW的安装路径. 完成安装. ...

  2. code blocks主题颜色配置

    添加配置文件 注意:在添加这些自定义配置文件之前一定要先将之前的文件配置备份! 在添加时一定要确保Code::Blocks**没有**在运行!下载下面的文件,并将其添加到C:\Users\<你的 ...

  3. code:blocks 编译环境设置

    1.  支持C99 在菜单settings->compiler settings->comiler settings->Other options 添加: -std=c99 2. 支 ...

  4. 体验Code::Blocks下的C++编程

    0.前言 在当前的行业发展和国际形势下,让更多的程序员思考跨平台编程问题.在众多的跨平台开发环境中,Code::Blocks具有独特的优势. 近二十年来,跨平台开发环境曾经如雨后春笋般产生,但是,由于 ...

  5. 利用Code::Blocks搭建64位C++开发平台

    0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...

  6. code::blocks 初使用遇到的问题记录

    /* 做本程序遇到的问题:由于使用的是CODE::BLOCKS 开发环境,刚开始使用code::blocks是,什么都 没有设置,居然输入的中文字符串,保存项目后,再次打开,code::blocks不 ...

  7. MAC+VS Code+C/C++调试配置

    目录 VS Code C/C++ 环境配置 添加工作区文件夹 Say Hello world 关于三个配置文件--Debug 原地址 VS Code C/C++ 环境配置 添加工作区文件夹 虽然代码能 ...

  8. Fedora Linux 下安装配置C开发环境Code::Blocks

    一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...

  9. 配置code::blocks的glut环境

    code::blocks很小,特别适合小型项目及家用旧电脑上MingW下编程,当然windows还是安装的Visual Studio办公用的,现把配置过程记录一遍. 1.在百度搜code::block ...

随机推荐

  1. 【JAVA】猜数字

    import java.util.*; public class GN { public static void main(String arg[]) { ;// 数字标记 ;// 位置标记 ;// ...

  2. jQuery 核心 - noConflict() 方法

    1.遇到问题: 当我们写jquery时使用$,发现写的jquery全部失效: 2.发现问题: 排查后发现是noConflict()函数在作怪,因为使用noConflict()函数后,重新定义$名字为j ...

  3. 危险的浮点数float

    今天写程序又以为我见鬼了!最后查出来发现原来又是浮点数搞的鬼! 情况大致是这样的,我想要测试向量运算的速度,所以要对一个浮点数向量进行求和运算,代码如下: int vect_size=10000000 ...

  4. Jmeter与Jenkins结合进行Web接口测试

    纯通过Jmeter的界面进行Web的接口测试,效率低下.为此将Jmeter的接口测试与Jenkins联合,实现持续集成.配置完成后,只需修改运行的Jmeter脚本即可,运行结束后测试结果发送到指定邮箱 ...

  5. 代码使用了php的包管理器composer,include到你的php脚本

    使用数据库进行crontab配置管理,除非你能够保证数据库的请求能够在长时间内保持稳定响应的话.推荐使用nosql类型的cache存储,同时做好持久化备份. 测试代码: define('DS', DI ...

  6. 2018-2019-2 20165330《网络对抗技术》Exp1 PC平台逆向破解

    目录 实验目标 实验内容 知识点描述 实验步骤 实验过程中遇到的问题 实验感想 实验目标 本次实验的对象是一个名为pwn1的linux可执行文件. -该程序正常执行流程是:main调用foo函数,fo ...

  7. 如何快速创建提交一个项目到Github

    1.https://github.com创建一个repository 2.本地创建一个文件夹A 3.命令行转到新文件夹A,执行git init使其能被git管理,并生成.git隐藏文件 4.如内容,应 ...

  8. bzoj4129 Haruna’s Breakfast 莫队

    这个思想不难理解了前面几个就能懂 但是代码比较复杂,大概会和之前几次碰到难题的时候一样,一步步思考下去,然后把难点分成好几个板块讲下qwq 首先读入这颗树,预处理下lca,然后就分块,这个时候就会碰到 ...

  9. Android(八) HandlerThread

    1.Looper Looper used to run a message loop for a thread. Threads by default do not have a message lo ...

  10. 将你的wordpress博客添加到百度个性首页

    当你登陆百度账号后,进入百度首页会显示新的个性首页,不仅仅有搜索框,下面还有一个小型导航,放着你经常去的网站. 百度提供了一键添加到百度首页的按钮代码. 首先,先打开分享到百度新首页代码申请页面:ht ...