随笔-3  评论-0  文章-1  trackbacks-0
  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 阅读(2811) | 评论 (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)编辑 收藏
仅列出标题