Intel C/C++ を用いた Google Test環境を準備するの続き。複数のソースコードファイルがあるときには、makeを使ってコンパイルするのが一般的。なので、テストのための実行ファイルもmakeを使って生成したい。そのためのメモ。ただし、動けばいいやレベルなのでご注意。
このMakefileのサンプルファイルはgtest-1.6.0.zip内の ./make/Makefile が参考になる。このファイルは、../samples 内の sample1.cc と sample1.h をテストする sample1_unittest.cc をコンパイルしている。Google Testのライブラリも同時にコンパイルしている( Intel C/C++ を用いた Google Test環境を準備するのように生成した静的ライブラリを使っていない)。
これを参考に Intel C/C++ を用いた Google Test環境を準備する で用意した環境で動くように作りなおす。
test.cpp と test2.cpp という2つのテスト用ファイルがあるときMakefileは以下のようになる。多分、不要な変数の定義がわさわさ含まれている。とりあえずは動く。
# A sample Makefile for building Google Test and using it in user # tests. 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. CC = icc CXX = icpc # Please tweak the following variable definitions as needed by your # project, except 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. GTEST_DIR = /usr/local/gtest # Where to find user code. USER_DIR = . # Flags passed to the preprocessor. CPPFLAGS += -I$(GTEST_DIR)/include # Flags passed to the C++ compiler. #CXXFLAGS += -g -Wall -Wextra # All tests produced by this Makefile. Remember to add new tests you # created to the list. TESTS = test_app test2_app # All Google Test headers. Usually you shouldn't change this # definition. GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \ $(GTEST_DIR)/include/gtest/internal/*.h GTEST_LIBS = $(GTEST_DIR)/lib/libgtest.a $(GTEST_DIR)/lib/libgtest_main.a # House-keeping build targets. all : $(TESTS) clean : rm -f $(TESTS) *.o # Builds a sample test. A test should link with either gtest.a or # gtest_main.a, depending on whether it defines its own main() # function. test.o : $(USER_DIR)/test.cpp $(GTEST_HEADERS) $(GTEST_LIBS) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/test.cpp test_app : test.o $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ $(GTEST_LIBS) -lpthread # For Test2 test2.o : $(USER_DIR)/test2.cpp $(GTEST_HEADERS) $(GTEST_LIBS) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/test2.cpp test2_app : test2.o $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ $(GTEST_LIBS) -lpthread