Advertisement
Guest User

Untitled

a guest
Sep 17th, 2011
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. GTEST_DIR = lib/gtest-1.6.0
  2. GTEST_LIB = libgtest.a
  3. CC = g++
  4.  
  5. SRC_FOLDER = src
  6. SRC_OBJ_FOLDER = obj/src
  7. SRC_CPP_FILES = $(wildcard ${SRC_FOLDER}/*.cc)
  8. SRC_OBJ_FILES = $(addprefix ${SRC_OBJ_FOLDER}/,$(notdir $(SRC_CPP_FILES:.cc=.o)))
  9.  
  10. TESTS_FOLDER = test
  11. TESTS_OBJ_FOLDER = obj/test
  12. TESTS_CPP_FILES = $(wildcard ${TESTS_FOLDER}/*.cc)
  13. TESTS_OBJ_FILES = $(addprefix ${TESTS_OBJ_FOLDER}/,$(notdir $(TESTS_CPP_FILES:.cc=.o)))
  14.  
  15. TESTS_CC_FLAGS = -I${GTEST_DIR}/include -I${SRC_FOLDER} -Wall -Werror
  16. TESTS_LD_FLAGS = -lpthread
  17.  
  18. .phony: test
  19.  
  20. default: test
  21.  
  22. all: ${SRC_OBJ_FILES}
  23.         ${CC} -o $@ $<
  24.  
  25. ${SRC_OBJ_FOLDER}/%.o: ${SRC_FOLDER}/%.cc
  26.         ${CC} -Wall -c -o $@ $<
  27.  
  28. build-dir:
  29.         @mkdir -p ${SRC_OBJ_FOLDER}
  30.         @mkdir -p ${TESTS_OBJ_FOLDER}
  31.  
  32. build-gtest:
  33.         ${CC} -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
  34.         ar -rv ${GTEST_LIB} gtest-all.o
  35.  
  36. build-tests: ${TESTS_OBJ_FILES}
  37.         # Hack to get rid of the main in src/ and not get "multiple definition" error
  38.         ${CC} ${TESTS_LD_FLAGS} -o $@ $< ${GTEST_LIB} $(subst obj/src/main.o,,${SRC_OBJ_FILES})
  39.  
  40. ${TESTS_OBJ_FOLDER}/%.o: ${TESTS_FOLDER}/%.cc
  41.         ${CC} ${TESTS_CC_FLAGS} -c -o $@ $<
  42.  
  43. test: build-dir build-gtest all build-tests
  44.         ./build-tests
  45.  
  46. clean:
  47.         @rm -rf ${SRC_OBJ_FOLDER}
  48.         @rm -rf ${TESTS_OBJ_FOLDER}
  49.         @rm -rf obj
  50.         @rm -f gtest-all.o
  51.         @rm -f ${GTEST_LIB}
  52.         @rm -f build-tests
  53.         @rm -f all
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement