Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1178798
  • 博文数量: 181
  • 博客积分: 4968
  • 博客等级: 上校
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-13 21:52
文章分类

全部博文(181)

文章存档

2015年(2)

2013年(6)

2012年(22)

2011年(41)

2010年(27)

2009年(51)

2008年(32)

我的朋友

分类: LINUX

2011-11-02 14:33:22

在Linux平台如何编译单元测试的代码?(请参考readme文件)
 
Step1. 编译gtest-all.cc和gtest_main.cc文件
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest_main.cc
 
Step2. 将step1生成的gtest-all.o和gtest_main.o打包成静态库libgtest.a
ar -rv libgtest.a gtest-all.o gtest_main.o
 
Step3. 编译要测试的代码(假设文件名为sample.cpp)
g++ -I${GTEST_DIR}/include -c sample.cpp
 
Step4. 编译单元测试的代码(假设文件名为test.cpp)
g++ -I${GTEST_DIR}/include -c test.cpp
 
Step5. 与libgtest.a或其他需要的库链接、生成可执行程序
g++ -I${GTEST_DIR}/include test.o sample.o libgtest.a -o test
 
其他的库,如pthread库。
Where, GTEST_DIR=/usr/src/gtest-1.5.0
 
编写的makefile文件如下。
简单版本
all:
g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.cc
g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.cc
ar -rv libgtest.a gtest-all.o gtest_main.o
g++ -I/usr/src/gtest-1.5.0/include -g -c sample.cpp
g++ -I/usr/src/gtest-1.5.0/include -g -c test.cpp
g++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o libgtest.a -g -o test
clean:
rm test libgtest.a *.o
 
实际上,其中将gtest-all.o和gtest_main.o压缩为libgtest.a库,可以省去,直接使用.o文件,如下。

all:
g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.cc
g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.cc
g++ -I/usr/src/gtest-1.5.0/include -g -c sample.cpp
g++ -I/usr/src/gtest-1.5.0/include -g -c test.cpp
g++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o gtest-all.o gtest_main.o -g -o test
clean:
rm test *.o
正式版本
# Google Test directory
GTEST_DIR = /usr/src/gtest-1.5.0
 
# Flags passed to the preprocessor.
CPPFLAGS += -I$(GTEST_DIR)/include
 
# Flags passed to the C++ compiler.
CXXFLAGS += -g -Wall -Wextra
 
# All Google Test headers.  Usually you shouldn't change this definition.
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h $(GTEST_DIR)/include/gtest/internal/*.h
 
# All Google Test sources
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
 
# All tests produced by this Makefile.  Remember to add new tests you created to the list.
TESTS = test
 
all : $(TESTS)
 
clean :
rm -f $(TESTS) gtest.a gtest_main.a *.o
 
gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc          # $(GTEST_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc
 
gtest_main.o : $(GTEST_DIR)/src/gtest_main.cc        # $(GTEST_SRCS_)
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest_main.cc
 
gtest_main.a : gtest-all.o gtest_main.o
$(AR) $(ARFLAGS) $@ $^
 
sample.o : sample.cpp sample.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c sample.cpp
 
test.o : test.cpp sample.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c test.cpp
 
test : sample.o test.o gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
$^代表依赖项,$@代表目标。
 
Reference
Readme
Makefile of sample
 
本篇文章来源于 Linux公社网站()  原文链接:
阅读(2606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~