2015年11月13日
在GitHub上下载googletest
$ git clone git@github.com:google/googletest.git
进入googletest目录
编译命令如下:
$ g++ -I./include/ -I./ -c ./src/gtest-all.cc
$ ar -rv libgtest.a gtest-all.o
$ cd ./make
$ make
此时会生成一个可执行文件sample1_unittest,执行测试;
$ ./sample1_unittest
测试成功.
将静态文件拷贝到/usr/local/lib/下
$ cp libgtest.a /usr/local/lib
将头文件拷贝到/usr/local/include/下
$ cp -r gtest /usr/local/include/
写一个简单的测试文件, example1.cpp
1 #include<gtest/gtest.h>
2 #include<iostream>
3 #include<stdexcept>
4
5 int Foo(int a, int b)
6 {
7 if (a == 0 || b == 0) {
8 throw std::invalid_argument("don't do that!");
9 }
10 int c = a % b;
11 if (c == 0) {
12 return b;
13 }
14 return Foo(b, c);
15 }
16
17 TEST(FooTest, HandleNonZeroInput)
18 {
19 EXPECT_EQ(2, Foo(4, 10));
20 EXPECT_EQ(6, Foo(30, 18));
21 }
22
23 int main(int argc, char* argv[])
24 {
25 testing::InitGoogleTest(&argc, argv);
26 return RUN_ALL_TESTS();
27 }
编译命令:
$ g++ -std=c++11 example1.cpp -lgtest -pthread
// 注意需要链接的库
参考资料:
1. 如何用gtest写单元测试: http://blog.csdn.net/russell_tao/article/details/7333226
2. 初识gtest: http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html
//
posted @
2015-11-13 02:10 machinemind 阅读(412) |
评论 (0) |
编辑 收藏
2015年11月12日
网上大多数C++开发都是用的c库,#include<mysql/mysql.h>。一直比较奇怪为什么不直接使用#include<mysql++/mysql++.h>
于是自己试了一番,写下以下Notes
文件名为: conn1.cpp
1 #define MYSQLPP_MYSQL_HEADERS_BURIED
2 #include<mysql++/mysql++.h>
3 #include<mysql++/cmdline.h>
4 #include<iostream>
5
6 int main(int argc, char* argv[])
7 {
8 mysqlpp::examples::CommandLine cmdline(argc, argv);
9 if (!cmdline) {
10 return 1;
11 }
12 }
注意事项:
1. 因为include了mysql++.h而不是mysql.h文件,可能提示缺少mysql_version.h文件。这时候只要在#include<mysql++/mysql++.h>这一行的上以行设置宏定义
#define MYSQLPP_MYSQL_HEADERS_BURIED就能解决了
2. mysql++的命名空间为mysqlpp
3. 编译链接库文件-lmysqlclient -lmysqlpp
所以编译命令为: $ g++ conn1.cpp -lmysqlclient -lmysqlpp
还有很多内容没有写,下次继续吧。
这是MySQL++用户手册的主页:http://www.tangentsoft.net/mysql++/doc/html/userman/index.html
///
posted @
2015-11-12 23:55 machinemind 阅读(2812) |
评论 (0) |
编辑 收藏
2015年11月9日
根据网址:
Boost C++ 库 第 4 章 事件处理示例代码
1 #include <boost/signal.hpp>
2 #include <iostream>
3
4 void func()
5 {
6 std::cout << "Hello, world!" << std::endl;
7 }
8
9 int main()
10 {
11 boost::signal<void ()> s;
12 s.connect(func);
13 s();
14 }
编译:$
g++ Sample1.cpp -lboost_signals一大堆提示信息:
/usr/local/include/boost/signal.hpp:17:4: warning: #warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING."
口怕,实际上是提示我们Boost.Signals已经过期废弃不维护了,请选择用Boost.Signals2来替换。
首先,确定signal2位置:$ ls /usr/local/include/boost/signal2/
对,就是这个位置。
修改下原来代码
1 #include <boost/signals2/signal.hpp>
2 #include <iostream>
3
4 void func()
5 {
6 std::cout << "Hello, world!" << std::endl;
7 }
8
9 int main()
10 {
11 boost::signals2::signal<void ()> s;
12 s.connect(func);
13 s();
14 }
实际上修改的就是Line2和Line11,修改下include的signal.hpp文件位置以及命名空间
再编译: $ g++ Sample2.cpp -lboost_signals
现在OK,没有一大堆的warning了
后面再附加一个Functor的例子。
1 #include <boost/signals2/signal.hpp>
2 #include <iostream>
3
4 int main()
5 {
6 struct HelloWorld
7 {
8 void operator()() const {
9 std::cout << "Hello, World!" << std::endl;
10 }
11 };
12
13 boost::signals2::signal<void()> sig;
14 HelloWorld hello;
15 sig.connect(hello); // Note,not "sig.connect(hello());"
16 sig();
17
18 return 0;
19 }
编译: $ g++ Sample3.cpp -lboost_signals
posted @
2015-11-09 01:35 machinemind 阅读(2457) |
评论 (0) |
编辑 收藏