blob: 85c8b38b95bd87521b709bf5c003c3f62dfdc9a9 [file] [log] [blame]
shiqiane35fdd92008-12-10 05:08:54 +00001# A sample Makefile for building both Google Mock and Google Test and
2# using them in user tests. This file is self-contained, so you don't
3# need to use the Makefile in Google Test's source tree. Please tweak
4# it to suit your environment and project. You may want to move it to
5# your project's root directory.
6#
7# SYNOPSIS:
8#
9# make [all] - makes everything.
10# make TARGET - makes the given target.
11# make clean - removes all files generated by make.
12
13# Please tweak the following variable definitions as needed by your
14# project, except GMOCK_HEADERS and GTEST_HEADERS, which you can use
15# in your own targets but shouldn't modify.
16
17# Points to the root of Google Test, relative to where this file is.
18# Remember to tweak this if you move this file, or if you want to use
19# a copy of Google Test at a different location.
20GTEST_DIR = ../gtest
21
22# Points to the root of Google Mock, relative to where this file is.
23# Remember to tweak this if you move this file.
24GMOCK_DIR = ..
25
26# Where to find user code.
27USER_DIR = ../test
28
29# Flags passed to the preprocessor.
30CPPFLAGS += -I$(GMOCK_DIR) -I$(GMOCK_DIR)/include \
31 -I$(GTEST_DIR) -I$(GTEST_DIR)/include
32
33# Flags passed to the C++ compiler.
34CXXFLAGS += -g
35
36# All tests produced by this Makefile. Remember to add new tests you
37# created to the list.
38TESTS = gmock_link_test gmock_test
39
40# All Google Test headers. Usually you shouldn't change this
41# definition.
42GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
43 $(GTEST_DIR)/include/gtest/internal/*.h
44
45# All Google Mock headers. Note that all Google Test headers are
46# included here too, as they are #included by Google Mock headers.
47# Usually you shouldn't change this definition.
48GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
49 $(GMOCK_DIR)/include/gmock/internal/*.h \
50 $(GTEST_HEADERS)
51
52# House-keeping build targets.
53
54all : $(TESTS)
55
56clean :
57 rm -f $(TESTS) gmock.a gmock_main.a *.o
58
59# Builds gmock.a and gmock_main.a. These libraries contain both
60# Google Mock and Google Test. A test should link with either gmock.a
61# or gmock_main.a, depending on whether it defines its own main()
62# function. It's fine if your test only uses features from Google
63# Test (and not Google Mock).
64
65# Usually you shouldn't tweak such internal variables, indicated by a
66# trailing _.
67GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
68GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS)
69
70# For simplicity and to avoid depending on implementation details of
71# Google Mock and Google Test, the dependencies specified below are
72# conservative and not optimized. This is fine as Google Mock and
73# Google Test compile fast and for ordinary users their source rarely
74# changes.
75gtest-all.o : $(GTEST_SRCS_)
76 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc
77
78gmock-all.o : $(GMOCK_SRCS_)
79 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GMOCK_DIR)/src/gmock-all.cc
80
81gmock_main.o : $(GMOCK_SRCS_)
82 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GMOCK_DIR)/src/gmock_main.cc
83
84gmock.a : gmock-all.o gtest-all.o
85 $(AR) $(ARFLAGS) $@ $^
86
87gmock_main.a : gmock-all.o gtest-all.o gmock_main.o
88 $(AR) $(ARFLAGS) $@ $^
89
90# Builds a sample test.
91
shiqiane35fdd92008-12-10 05:08:54 +000092gmock_link_test.o : $(USER_DIR)/gmock_link_test.cc \
zhanyong.wan38ca64d2009-02-19 22:30:22 +000093 $(USER_DIR)/gmock_link_test.h $(GMOCK_HEADERS)
shiqiane35fdd92008-12-10 05:08:54 +000094 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_link_test.cc
95
zhanyong.wan38ca64d2009-02-19 22:30:22 +000096gmock_link2_test.o : $(USER_DIR)/gmock_link2_test.cc \
97 $(USER_DIR)/gmock_link_test.h $(GMOCK_HEADERS)
98 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_link2_test.cc
99
100gmock_link_test : gmock_link_test.o gmock_link2_test.o gmock_main.a
shiqiane35fdd92008-12-10 05:08:54 +0000101 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@
102
103# Builds another sample test.
104
105gmock_test.o : $(USER_DIR)/gmock_test.cc $(GMOCK_HEADERS)
106 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_test.cc
107
108gmock_test : gmock_test.o gmock_main.a
109 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@