1 # A sample Makefile for building Google Test and using it in user
2 # tests. Please tweak it to suit your environment and project. You
3 # may want to move it to your project's root directory.
7 # make [all] - makes everything.
8 # make TARGET - makes the given target.
9 # make clean - removes all files generated by make.
11 # Please tweak the following variable definitions as needed by your
12 # project, except GTEST_HEADERS, which you can use in your own targets
13 # but shouldn't modify.
15 # Points to the root of Google Test, relative to where this file is.
16 # Remember to tweak this if you move this file.
17 GTEST_DIR
= ..
/..
/lib
/test/gtest
19 # Where to find user code.
22 USER_INCLUDE_DIR
= $(USER_DIR
)
24 OBJECT_DIR
= ..
/..
/obj
/test
26 # Flags passed to the preprocessor.
27 # Set Google Test's header directory as a system directory, such that
28 # the compiler doesn't generate warnings in Google Test headers.
29 CPPFLAGS
+= -isystem
$(GTEST_DIR
)/inc
31 # Flags passed to the C++ compiler.
32 CXXFLAGS
+= -g
-Wall
-Wextra
-pthread
-ggdb3
-O0
-DUNIT_TEST
34 # All tests produced by this Makefile. Remember to add new tests you
35 # created to the list.
39 gps_conversion_unittest \
40 telemetry_hott_unittest \
41 rc_controls_unittest \
45 # All Google Test headers. Usually you shouldn't change this
47 GTEST_HEADERS
= $(GTEST_DIR
)/inc
/gtest
/*.h
49 # House-keeping build targets.
54 rm -rf
$(TESTS
) $(OBJECT_DIR
)
56 # Builds gtest.a and gtest_main.a.
58 # Usually you shouldn't tweak such internal variables, indicated by a
60 GTEST_SRCS_
= $(GTEST_DIR
)/src
/*.
cc $(GTEST_DIR
)/inc
/gtest
/*.h
$(GTEST_HEADERS
)
62 # For simplicity and to avoid depending on Google Test's
63 # implementation details, the dependencies specified below are
64 # conservative and not optimized. This is fine as Google Test
65 # compiles fast and for ordinary users its source rarely changes.
66 $(OBJECT_DIR
)/gtest-all.o
: $(GTEST_SRCS_
)
68 $(CXX
) $(CPPFLAGS
) -I
$(GTEST_DIR
) $(CXXFLAGS
) -c \
69 $(GTEST_DIR
)/src
/gtest-all.
cc -o
$@
71 $(OBJECT_DIR
)/gtest_main.o
: $(GTEST_SRCS_
)
73 $(CXX
) $(CPPFLAGS
) -I
$(GTEST_DIR
) $(CXXFLAGS
) -c \
74 $(GTEST_DIR
)/src
/gtest_main.
cc -o
$@
76 $(OBJECT_DIR
)/gtest.a
: $(OBJECT_DIR
)/gtest-all.o
77 $(AR
) $(ARFLAGS
) $@
$^
79 $(OBJECT_DIR
)/gtest_main.a
: $(OBJECT_DIR
)/gtest-all.o
$(OBJECT_DIR
)/gtest_main.o
80 $(AR
) $(ARFLAGS
) $@
$^
82 # Builds a sample test. A test should link with either gtest.a or
83 # gtest_main.a, depending on whether it defines its own main()
86 # includes in test dir must override includes in user dir
87 TEST_INCLUDE_DIRS
:= $(TEST_DIR
) \
91 TEST_CFLAGS
= $(addprefix -I
,$(TEST_INCLUDE_DIRS
))
94 $(OBJECT_DIR
)/sensors
/battery.o
: $(USER_DIR
)/sensors
/battery.c
$(USER_DIR
)/sensors
/battery.h
$(GTEST_HEADERS
)
96 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/sensors
/battery.c
-o
$@
98 $(OBJECT_DIR
)/battery_unittest.o
: $(TEST_DIR
)/battery_unittest.
cc \
99 $(USER_DIR
)/sensors
/battery.h
$(GTEST_HEADERS
)
101 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/battery_unittest.
cc -o
$@
103 battery_unittest
: $(OBJECT_DIR
)/sensors
/battery.o
$(OBJECT_DIR
)/battery_unittest.o
$(OBJECT_DIR
)/gtest_main.a
104 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
108 $(OBJECT_DIR
)/flight
/altitudehold.o
: $(USER_DIR
)/flight
/altitudehold.c
$(USER_DIR
)/flight
/altitudehold.h
$(GTEST_HEADERS
)
110 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/flight
/altitudehold.c
-o
$@
112 $(OBJECT_DIR
)/flight
/imu.o
: $(USER_DIR
)/flight
/imu.c
$(USER_DIR
)/flight
/imu.h
$(GTEST_HEADERS
)
114 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/flight
/imu.c
-o
$@
116 $(OBJECT_DIR
)/flight_imu_unittest.o
: $(TEST_DIR
)/flight_imu_unittest.
cc \
117 $(USER_DIR
)/flight
/imu.h
$(GTEST_HEADERS
)
119 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/flight_imu_unittest.
cc -o
$@
121 flight_imu_unittest
: $(OBJECT_DIR
)/flight
/imu.o
$(OBJECT_DIR
)/flight
/altitudehold.o
$(OBJECT_DIR
)/flight_imu_unittest.o
$(OBJECT_DIR
)/gtest_main.a
122 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
125 $(OBJECT_DIR
)/flight
/gps_conversion.o
: $(USER_DIR
)/flight
/gps_conversion.c
$(USER_DIR
)/flight
/gps_conversion.h
$(GTEST_HEADERS
)
127 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/flight
/gps_conversion.c
-o
$@
129 $(OBJECT_DIR
)/gps_conversion_unittest.o
: $(TEST_DIR
)/gps_conversion_unittest.
cc \
130 $(USER_DIR
)/flight
/gps_conversion.h
$(GTEST_HEADERS
)
132 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/gps_conversion_unittest.
cc -o
$@
134 gps_conversion_unittest
: $(OBJECT_DIR
)/flight
/gps_conversion.o
$(OBJECT_DIR
)/gps_conversion_unittest.o
$(OBJECT_DIR
)/gtest_main.a
135 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
139 $(OBJECT_DIR
)/telemetry
/hott.o
: $(USER_DIR
)/telemetry
/hott.c
$(USER_DIR
)/telemetry
/hott.h
$(GTEST_HEADERS
)
141 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/telemetry
/hott.c
-o
$@
143 $(OBJECT_DIR
)/telemetry_hott_unittest.o
: $(TEST_DIR
)/telemetry_hott_unittest.
cc \
144 $(USER_DIR
)/telemetry
/hott.h
$(GTEST_HEADERS
)
146 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/telemetry_hott_unittest.
cc -o
$@
148 telemetry_hott_unittest
:$(OBJECT_DIR
)/telemetry
/hott.o
$(OBJECT_DIR
)/telemetry_hott_unittest.o
$(OBJECT_DIR
)/flight
/gps_conversion.o
$(OBJECT_DIR
)/gtest_main.a
149 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
153 $(OBJECT_DIR
)/io
/rc_controls.o
: $(USER_DIR
)/io
/rc_controls.c
$(USER_DIR
)/io
/rc_controls.h
$(GTEST_HEADERS
)
155 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/io
/rc_controls.c
-o
$@
157 $(OBJECT_DIR
)/rc_controls_unittest.o
: $(TEST_DIR
)/rc_controls_unittest.
cc \
158 $(USER_DIR
)/io
/rc_controls.h
$(GTEST_HEADERS
)
160 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/rc_controls_unittest.
cc -o
$@
162 rc_controls_unittest
:$(OBJECT_DIR
)/io
/rc_controls.o
$(OBJECT_DIR
)/rc_controls_unittest.o
$(OBJECT_DIR
)/gtest_main.a
163 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
166 $(OBJECT_DIR
)/io
/ledstrip.o
: $(USER_DIR
)/io
/ledstrip.c
$(USER_DIR
)/io
/ledstrip.h
$(GTEST_HEADERS
)
168 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/io
/ledstrip.c
-o
$@
170 $(OBJECT_DIR
)/ledstrip_unittest.o
: $(TEST_DIR
)/ledstrip_unittest.
cc \
171 $(USER_DIR
)/io
/ledstrip.h
$(GTEST_HEADERS
)
173 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/ledstrip_unittest.
cc -o
$@
175 ledstrip_unittest
:$(OBJECT_DIR
)/io
/ledstrip.o
$(OBJECT_DIR
)/ledstrip_unittest.o
$(OBJECT_DIR
)/gtest_main.a
176 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@
180 $(OBJECT_DIR
)/drivers
/light_ws2811strip.o
: $(USER_DIR
)/drivers
/light_ws2811strip.c
$(USER_DIR
)/drivers
/light_ws2811strip.h
$(GTEST_HEADERS
)
182 $(CC
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(USER_DIR
)/drivers
/light_ws2811strip.c
-o
$@
184 $(OBJECT_DIR
)/ws2811_unittest.o
: $(TEST_DIR
)/ws2811_unittest.
cc \
185 $(USER_DIR
)/drivers
/light_ws2811strip.h
$(GTEST_HEADERS
)
187 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) $(TEST_CFLAGS
) -c
$(TEST_DIR
)/ws2811_unittest.
cc -o
$@
189 ws2811_unittest
:$(OBJECT_DIR
)/drivers
/light_ws2811strip.o
$(OBJECT_DIR
)/ws2811_unittest.o
$(OBJECT_DIR
)/gtest_main.a
190 $(CXX
) $(CPPFLAGS
) $(CXXFLAGS
) -lpthread
$^
-o
$(OBJECT_DIR
)/$@