0

「googlemock」を作成しようとしていますが、取得しているライブラリはgmock_main.aの1つだけです。

gmock.aが作成されないのはなぜですか?4つの.oファイルが生成されます。

ありがとう、

バリー。

#GoogleMockとGoogleTestの両方を構築するためのサンプルMakefileと
#ユーザーテストでそれらを使用します。このファイルは自己完結型であるため、
#GoogleTestのソースツリーでMakefileを使用する必要があります。微調整してください
#環境やプロジェクトに合わせてください。あなたはそれをに移動したいかもしれません
#プロジェクトのルートディレクトリ。
#
#概要:
#
#make[all]-すべてを作成します。
#makeTARGET-指定されたターゲットを作成します。
#makeclean-makeによって生成されたすべてのファイルを削除します。

#必要に応じて、次の変数定義を微調整してください
#プロジェクト。ただし、使用できるGMOCK_HEADERSとGTEST_HEADERSは除きます。
#自分のターゲットにありますが、変更しないでください。

#このファイルがある場所を基準にして、GoogleTestのルートを指します。
#このファイルを移動する場合、または使用する場合は、これを微調整することを忘れないでください
#別の場所にあるGoogleTestのコピー。
GTEST_DIR = ../gtest

#このファイルがある場所を基準にして、GoogleMockのルートを指します。
#このファイルを移動する場合は、これを微調整することを忘れないでください。
GMOCK_DIR=。。

#ユーザーコードの場所。
USER_DIR = ../test

#プリプロセッサに渡されるフラグ。
CPPFLAGS + = -I $(GTEST_DIR)/ include -I $(GMOCK_DIR)/ include

#C++コンパイラに渡されるフラグ。
CXXFLAGS + = -g -Wall -Wextra

#このMakefileによって生成されたすべてのテスト。新しいテストを追加することを忘れないでください
#リストに作成されました。
TESTS = gmock_test

#すべてのGoogleTestヘッダー。通常、これを変更するべきではありません
# 意味。
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
                $(GTEST_DIR)/ include / gtest / internal/*。h

#すべてのGoogleモックヘッダー。すべてのGoogleTestヘッダーが
#Google Mockヘッダーに含まれているため、ここにも含まれています。
#通常、この定義は変更しないでください。
GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
                $(GMOCK_DIR)/ include / gmock / internal/*。h\
                $(GTEST_HEADERS)

#ハウスキーピングビルドターゲット。

すべて:$(TESTS)

綺麗 :
    rm -f $(TESTS)gmock.a gmock_main.a * .o

#gmock.aとgmock_main.aをビルドします。これらのライブラリには両方が含まれています
#グーグルモックとグーグルテスト。テストはいずれかのgmock.aとリンクする必要があります
#またはgmock_main.a、それが独自のmain()を定義するかどうかに応じて
# 働き。テストでGoogleの機能のみを使用する場合は問題ありません
#テスト(Googleモックではない)。

#通常、このような内部変数を微調整するべきではありません。
#末尾_。
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS)

#簡単にするため、および実装の詳細に依存しないようにするため
#グーグルモックとグーグルテスト、以下に指定された依存関係は
#保守的で最適化されていません。これはグーグルモックと
#Google Testは高速にコンパイルされ、通常のユーザーの場合、ソースはめったにありません
#変更。
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)$ @ $ ^

#サンプルテストを作成します。

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 $ @
4

1 に答える 1

3

ここで手足に出かけます。私はあなたがそれにコマンドを与えているに違いないmake all。コメント

#   make [all]  - makes everything.

誤解を招くです。実際にmake allは、gmock_test(およびそのターゲットが必要とするもの、つまりgmock_main.a4つのオブジェクトファイル)のみを作成します。作成したいgmock.a場合は、いくつかの選択肢があります。

1)make gmock.a

2)次のようにターゲットに追加gmock.aします。all

all : $(TESTS) gmock.a

3)実行可能ファイルなど、実際に必要な他の何かのルールを記述しますgmock.a

real_thing: gmock.a
    ...
于 2011-03-30T14:27:23.883 に答える