生成libgtest.a文件
在前面的一篇文章中我大概的描述了gtest的使用,不过生成libgtest.a文件包含gtest_main.a文件,如果我们要写自己的main函数怎么呢,而不源码包中提供的gtest_main.cc文件。[http://blog.youkuaiyun.com/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 = gcc
XX = g++
CFLAGS = -W -O0 -fPIC
target = ./run_test
includes = -I ./ \
-I ../ \
-I /root/gtest_program/include \
#the a file path
lib_path = -L ./ \
-L ../ \
-L /root/gtest_program/lib
#link lib.a file
lib = -lpthread \
-lgtest\
INCLUDE := $(includes)
user_dir = ./ \
./src
files = $(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 $@ -DLinux
clean :
rm -rf $(target)
rm -rf $(objects)
makefile写好后执行make命令生成可以执行的文件
运行:
到此为止本篇文章就大概到这里,如果有不明白的地方请留言。转载请注明出去,谢谢!
本文介绍了如何生成gtest静态库libgtest.a,包括下载gtest源码,使用g++编译生成gtest-all.o,然后通过ar命令创建libgtest.a。接着,展示了将库文件和头文件集成到个人工程中的步骤,包括拷贝库文件和头文件,并编写自己的main函数。最后,给出了makefile示例,执行make命令后可得到可执行文件。
687

被折叠的 条评论
为什么被折叠?



