# A sample Makefile for building both Google Mock and Google Test and # using them in user tests. This file is self-contained, so you don't # need to use the Makefile in Google Test's source tree. Please tweak # it to suit your environment and project. You may want to move it to # your project's root directory. # # SYNOPSIS: # # make [all] - makes everything. # make TARGET - makes the given target. # make clean - removes all files generated by make. # Please tweak the following variable definitions as needed by your # project, except GMOCK_HEADERS and GTEST_HEADERS, which you can use # in your own targets but shouldn't modify. # Points to the root of Google Test, relative to where this file is. # Remember to tweak this if you move this file, or if you want to use # a copy of Google Test at a different location. GTEST_DIR = ../gtest # Points to the root of Google Mock, relative to where this file is. # Remember to tweak this if you move this file. GMOCK_DIR = .. # Where to find user code. USER_DIR = ../test # Flags passed to the preprocessor. CPPFLAGS += -I$(GMOCK_DIR) -I$(GMOCK_DIR)/include \ -I$(GTEST_DIR) -I$(GTEST_DIR)/include # Flags passed to the C++ compiler. CXXFLAGS += -g # All tests produced by this Makefile. Remember to add new tests you # created to the list. TESTS = gmock_link_test gmock_test # 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 Mock headers. Note that all Google Test headers are # included here too, as they are #included by Google Mock headers. # Usually you shouldn't change this definition. GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \ $(GMOCK_DIR)/include/gmock/internal/*.h \ $(GTEST_HEADERS) # House-keeping build targets. all : $(TESTS) clean : rm -f $(TESTS) gmock.a gmock_main.a *.o # Builds gmock.a and gmock_main.a. These libraries contain both # Google Mock and Google Test. A test should link with either gmock.a # or gmock_main.a, depending on whether it defines its own main() # function. It's fine if your test only uses features from Google # Test (and not Google Mock). # Usually you shouldn't tweak such internal variables, indicated by a # trailing _. GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS) # For simplicity and to avoid depending on implementation details of # Google Mock and Google Test, the dependencies specified below are # conservative and not optimized. This is fine as Google Mock and # Google Test compile fast and for ordinary users their source rarely # changes. gtest-all.o : $(GTEST_SRCS_) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc gmock-all.o : $(GMOCK_SRCS_) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GMOCK_DIR)/src/gmock-all.cc gmock_main.o : $(GMOCK_SRCS_) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GMOCK_DIR)/src/gmock_main.cc gmock.a : gmock-all.o gtest-all.o $(AR) $(ARFLAGS) $@ $^ gmock_main.a : gmock-all.o gtest-all.o gmock_main.o $(AR) $(ARFLAGS) $@ $^ # Builds a sample test. gmock-sample.o : $(USER_DIR)/gmock-sample.cc $(USER_DIR)/gmock-sample.h \ $(GMOCK_HEADERS) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock-sample.cc gmock_link_test.o : $(USER_DIR)/gmock_link_test.cc \ $(USER_DIR)/gmock-sample.h $(GMOCK_HEADERS) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_link_test.cc gmock_link_test : gmock-sample.o gmock_link_test.o gmock_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ # Builds another sample test. gmock_test.o : $(USER_DIR)/gmock_test.cc $(GMOCK_HEADERS) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_test.cc gmock_test : gmock_test.o gmock_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@