生成gtest静态库 libgtest.a文件

来源:互联网 发布:类似openvpn的软件 编辑:程序博客网 时间:2024/05/17 17:43

生成libgtest.a文件

在前面的一篇文章中我大概的描述了gtest的使用,不过生成libgtest.a文件包含gtest_main.a文件,如果我们要写自己的main函数怎么呢,而不源码包中提供的gtest_main.cc文件。[http://blog.csdn.net/chenxun_2010/article/details/53639980]
好了,
1. 下载gtest源码包。目录结构如下。
这里写图片描述

2.生成静态库a文件
g++ -isystem ./include -I./ -pthread -c src/gtest-all.cc 生成gtest-all.o文件
然后执行下面的命令生成libgtest.a文件
ar -rv libgtest.a gtest-all.o
这里写图片描述

3.libgtest.a文件的使用。
建立自己的工程目录,目录结构如下
这里写图片描述
把gtest源码包下面的include下的文件拷贝到自己的工程目录下的include文件夹下
这里写图片描述

把刚才生成的libgtest.a的文件拷贝自己工程目录下lib目录下
cp ~/gtest-1.7.0/libgtest.a lib/
这里写图片描述

拷贝源码里面的例子到自己的工程目录下
cp ~/gtest-1.7.0/samples/sample1.h include/
cp ~/gtest-1.7.0/samples/sample1.cc src/sample1.cpp
cp ~/gtest1.7.0/samples/sample1_unittest.cc src/sample1_unittest.cpp
这里写图片描述

然后参考gtest源码包下src中gtest_main.cc文件写一个自己的main文件
放到自己的工程目录下src文件夹下
这里写图片描述

#include <stdio.h>#include "gtest/gtest.h"GTEST_API_ int main(int argc, char **argv) {  printf("Running main() from gtest_main.cc\n");  testing::InitGoogleTest(&argc, argv);  return RUN_ALL_TESTS();}

然后写一个自己的工程makefile文件,我提供一下我的makefile文件,大家可以仿照这个makefile写自己的makefile文件

CC = gccXX = g++CFLAGS = -W -O0 -fPICtarget = ./run_testincludes = -I ./ \            -I ../ \            -I /root/gtest_program/include \#the a file path lib_path = -L ./   \        -L ../ \        -L /root/gtest_program/lib#link lib.a filelib = -lpthread \        -lgtest\INCLUDE := $(includes)user_dir = ./ \            ./srcfiles = $(foreach d, $(user_dir), $(wildcard $(d)/*.cpp))objects = $(patsubst %.cpp, %.o, $(files))$(target) : $(objects)    $(XX)  $^ -o $@  $(lib_path) $(lib)%.o : %.cpp    $(XX) $(CFLAGS) $(includes) -c  $^  -g -o  $@  -DLinuxclean :     rm -rf $(target)    rm -rf $(objects)

makefile写好后执行make命令生成可以执行的文件
这里写图片描述

运行:
这里写图片描述

到此为止本篇文章就大概到这里,如果有不明白的地方请留言。转载请注明出去,谢谢!

0 0