Use Google Test from Qt in Windows

后端 未结 3 1356
终归单人心
终归单人心 2021-02-08 15:45

I have a simple test file, TestMe.cpp:

#include 

TEST(MyTest, SomeTest) {
  EXPECT_EQ(1, 1);
}

int main(int argc, char **argv) {
  ::testi         


        
3条回答
  •  隐瞒了意图╮
    2021-02-08 16:13

    I never could get this to work as a static library, but it's working as a DLL.

    First, I had to build Google Test as a DLL. I did not have any success getting this to work in Visual Studio, so I just used mingw32-make. You can use the Makefile provided in the source, making the following changes:

    gtest-all.o : $(GTEST_SRCS_)
        $(CXX) $(CPPFLAGS) -DGTEST_CREATE_SHARED_LIBRARY=1 -I$(GTEST_DIR) $(CXXFLAGS) -c \
                $(GTEST_DIR)/src/gtest-all.cc
    
    gtest_main.o : $(GTEST_SRCS_)
        $(CXX) $(CPPFLAGS) -DGTEST_CREATE_SHARED_LIBRARY=1 -I$(GTEST_DIR) $(CXXFLAGS) -c \
                $(GTEST_DIR)/src/gtest_main.cc
    
    gtest.dll : gtest-all.o
        $(CXX) -shared -o $@ $^ -Wl,--out-implib,gtest_dll.lib
    
    gtest_main.dll : gtest-all.o gtest_main.o
        $(CXX) -shared -o $@ $^ -Wl,--out-implib,gtest_main_dll.lib
    

    Then, when compiling your test project, you must:

    • Define GTEST_LINKED_AS_SHARED_LIBRARY=1
    • Set a library reference to either gtest_dll.lib or gtest_main_dll.lib.
    • Paste gtest.dll or gtest_main.dll in the same directory as your executable.

    (My understanding is that you use gtest_main only if you are NOT providing your own main() function.)

    Here is a sample Qt pro file based on the one I have this is (finally!) working:

    DEFINES += GTEST_LINKED_AS_SHARED_LIBRARY=1
    SOURCES += main.cpp MyClassTests.cpp
    INCLUDEPATH += ../path/to/gtest/includes
    LIBS += -L../path/to/gtest/libraries -lgtest_dll \
        -L../ClassLibrary/bin -lMyClass
    CONFIG += console
    

提交回复
热议问题