Makefile 不生成所有预期的库

Makefile 不生成所有预期的库,makefile,msys,googlemock,Makefile,Msys,Googlemock,我试图制作“谷歌模拟”,但我只得到一个库: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 s

我试图制作“谷歌模拟”,但我只得到一个库: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) $@ $^ gmock_main.a : gmock-all.o gtest-all.o gmock_main.o $(AR) $(ARFLAGS) $@ $^ # 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 $@ #用于构建GoogleMock和GoogleTest的样例Makefile,以及 #在用户测试中使用它们。此文件是自包含的,因此您不需要 #需要在Google测试的源代码树中使用Makefile。请调整 #它适合您的环境和项目。您可能想将其移动到 #项目的根目录。 # #简介: # #制造[一切]-制造一切。 #生成目标-生成给定目标。 #使干净-删除由make生成的所有文件。 #请根据用户的需要调整以下变量定义 #项目,除了可以使用的GMOCK_头和GTEST_头之外 #在您自己的目标中,但不应修改。 #指向Google测试的根,相对于此文件所在的位置。 #如果移动此文件,或者如果要使用 #另一个位置的谷歌测试副本。 GTEST_DIR=../GTEST #指向GoogleMock的根,与此文件所在的位置相对。 #如果移动此文件,请记住调整此参数。 GMOCK_DIR=。。 #在哪里可以找到用户代码。 用户_DIR=../test #传递给预处理器的标志。 CPPFLAGS+=-I$(GTEST\u DIR)/include-I$(GMOCK\u DIR)/include 将标志传递给C++编译器。 CXXFLAGS+=-g-墙-Wextra #此生成文件生成的所有测试。记住添加新的测试 #创建到列表中。 测试=gmock\u测试 #所有谷歌测试标题。通常你不应该改变这个 #定义。 GTEST_头=$(GTEST_DIR)/include/GTEST/*.h\ $(GTEST_DIR)/include/GTEST/internal/*.h #所有谷歌模拟头。请注意,所有Google测试头都是 #也包括在这里,因为它们被Google模拟标题包括在内。 #通常你不应该改变这个定义。 GMOCK\u头=$(GMOCK\u DIR)/include/GMOCK/*.h\ $(GMOCK_DIR)/include/GMOCK/internal/*.h\ $(GTEST_标题) #内务部建立目标。 全部:$(测试) 清洁: rm-f$(测试)gmock.a gmock_main.a*.o #构建gmock.a和gmock_main.a。这些库同时包含 #谷歌模拟和谷歌测试。测试应该与gmock.A或gmock.A链接 #或gmock_main.a,这取决于它是否定义了自己的main() #功能。如果你的测试只使用谷歌的功能就可以了 #测试(而不是谷歌模拟)。 #通常,您不应该调整这样的内部变量,由 #拖尾。 GTEST_SRCS=$(GTEST_DIR)/src/*.cc$(GTEST_DIR)/src/*.h$(GTEST_HEADERS) GMOCK\u SRCS\u=$(GMOCK\u DIR)/src/*.cc$(GMOCK\u头) #为简单起见,避免依赖 #Google模拟和Google测试,下面指定的依赖项是 #保守且未优化。这很好,就像谷歌模拟和 #谷歌测试编译速度快,对于普通用户来说,他们的源代码很少 #变化。 gtest all.o:$(gtest\U SRCS) $(CXX)$(CPPFLAGS)-I$(GTEST\U DIR)-I$(GMOCK\U DIR)$(CXXFLAGS)\ -c$(GTEST_DIR)/src/GTEST-all.cc gmock all.o:$(gmock\u SRCS) $(CXX)$(CPPFLAGS)-I$(GTEST\U DIR)-I$(GMOCK\U DIR)$(CXXFLAGS)\ -c$(GMOCK_DIR)/src/GMOCK-all.cc gmock\u main.o:$(gmock\u SRCS) $(CXX)$(CPPFLAGS)-I$(GTEST\U DIR)-I$(GMOCK\U DIR)$(CXXFLAGS)\ -c$(GMOCK_DIR)/src/GMOCK_main.cc a:全部都是,全部都是 $(AR)$(ARFLAGS)$@$^ a:全部都是,全部都是 $(AR)$(ARFLAGS)$@$^ #构建一个示例测试。 gmock\u test.o:$(USER\u DIR)/gmock\u test.cc$(gmock\u头文件) $(CXX)$(CPPFLAGS)$(CXXFLAGS)-c$(用户目录)/gmock\u test.cc gmock_测试:gmock_测试。o gmock_main.a $(CXX)$(CPPFLAGS)$(CXXFLAGS)-lpthread$^-o$@
我要冒险出去。我敢打赌你给它的命令是
makeall
。评论

#   make [all]  - makes everything.
这是误导。实际上,
makeall
只生成
gmock\u test
(以及目标需要的东西,即
gmock\u main.a
和四个对象文件)。如果您想制作
gmock.a
,您有两个选择:

1)
make gmock.a

2) 将
gmock.a
添加到
all
目标,如下所示:

all : $(TESTS) gmock.a
3) 为其他东西编写一个规则,比如一个可执行文件,它实际上需要
gmock.a

real_thing: gmock.a
    ...

我要冒险出去。我敢打赌你给它的命令是
makeall
。评论

#   make [all]  - makes everything.
这是误导。实际上,
makeall
只生成
gmock\u test
(以及目标需要的东西,即
gmock\u main.a
和四个对象文件)。如果您想制作
gmock.a
,您有两个选择:

1)
make gmock.a

2) 将
gmock.a
添加到
all
目标,如下所示:

all : $(TESTS) gmock.a
3) 为其他东西编写一个规则,比如一个可执行文件,它实际上需要
gmock.a

real_thing: gmock.a
    ...