2011-03-30 31 views
0

「谷歌模擬」但我只獲得了一個庫:gmock_main.a請不生產所有我試圖使預期的庫

爲什麼gmock.a沒有被生產出來的?生成四個.o文件。

謝謝,

巴里。

 
# 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$(GTEST_DIR)/include -I$(GMOCK_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 = 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) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \ 
      -c $(GTEST_DIR)/src/gtest-all.cc 

gmock-all.o : $(GMOCK_SRCS_) 
    $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \ 
      -c $(GMOCK_DIR)/src/gmock-all.cc 

gmock_main.o : $(GMOCK_SRCS_) 
    $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \ 
      -c $(GMOCK_DIR)/src/gmock_main.cc 

gmock.a : gmock-all.o gtest-all.o 
    $(AR) $(ARFLAGS) [email protected] $^ 

gmock_main.a : gmock-all.o gtest-all.o gmock_main.o 
    $(AR) $(ARFLAGS) [email protected] $^ 

# Builds a 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) -lpthread $^ -o [email protected] 

回答

3

我要在這裏出去。我敢打賭你會給它命令make all。評論

# make [all] - makes everything. 

是誤導。實際上,make all只產生gmock_test(以及那個目標需要的東西,即gmock_main.a和四個目標文件)。如果你想gmock.a,你有兩個選擇:

1)make gmock.a

2)添加gmock.aall目標,就像這樣:

all : $(TESTS) gmock.a 

3)寫出的規則一些其他的東西,像一個可執行文件,實際上需要gmock.a

real_thing: gmock.a 
    ... 
相關問題