Nie jest to udokumentowane na stronie internetowej i wydaje się, że ludzie mają problemy z konfiguracją frameworka. Czy ktoś może pokazać krok po kroku wprowadzenie do przykładowej konfiguracji projektu?
82
Nie jest to udokumentowane na stronie internetowej i wydaje się, że ludzie mają problemy z konfiguracją frameworka. Czy ktoś może pokazać krok po kroku wprowadzenie do przykładowej konfiguracji projektu?
Odpowiedzi:
To, co powiedział Arlaharen, było w zasadzie słuszne, z wyjątkiem tego, że pominął część wyjaśniającą błędy łącznika. Przede wszystkim musisz zbudować aplikację bez CRT jako biblioteki wykonawczej. Zawsze powinieneś to robić, ponieważ to naprawdę upraszcza dystrybucję aplikacji. Jeśli tego nie zrobisz, wszyscy twoi użytkownicy będą potrzebować zainstalowanej biblioteki Visual C ++ Runtime Library, a ci, którzy tego nie zrobią, będą narzekać na brak tajemniczej biblioteki DLL w ich systemie ... za dodatkowe kilkaset kilobajtów, które kosztuje połączenie CRT statycznie, oszczędzasz sobie później dużo bólu głowy w ramach wsparcia (zaufaj mi w tej kwestii - nauczyłem się tego na własnej skórze!).
W każdym razie, aby to zrobić, przejdź do właściwości celu -> C / C ++ -> Generowanie kodu -> Biblioteka wykonawcza i musi być ustawiony jako „Wielowątkowy” dla kompilacji wydania i „Debugowanie wielowątkowe” dla Twoja kompilacja debugowania.
Ponieważ numeru GTEST biblioteka jest zbudowany w taki sam sposób, trzeba upewnić się, że łączenie przeciwko poprawnej wersji tego lub innego łącznik będzie ciągnąć w innym egzemplarzu biblioteki wykonawczego, którym jest błąd obejrzałeś (btw, to nie powinno robić różnicy, czy używasz MFC, czy nie). Musisz zbudować gtest zarówno jako tryb debugowania, jak i wydania i zachować obie kopie. Następnie łączysz się z gtest.lib / gtest_main.lib w kompilacji wydania i gtestd.lib / gtest_maind.lib w kompilacji debugowania.
Musisz również upewnić się, że Twoja aplikacja wskazuje katalog, w którym przechowywane są pliki nagłówkowe gtest (we właściwościach -> C / C ++ -> Ogólne -> Dodatkowe katalogi dołączania), ale jeśli dostałeś się do błędu linkera, zakładam że już udało ci się poprawić tę część, inaczej musiałbyś najpierw zająć się znacznie większą liczbą błędów kompilatora.
źródło
(Te instrukcje powodują, że platforma testowa działa dla konfiguracji debugowania. Zastosowanie tego samego procesu do konfiguracji wydania powinno być dość trywialne).
Pobierz platformę testową Google C ++
C:\gtest
Zbuduj biblioteki ramowe
C:\gtest\msvc\gtest.sln
w programie Visual StudioUtwórz i skonfiguruj projekt testowy
C:\gtest\include
C:\gtest\msvc\gtest\Debug
lubC:\gtest\msvc\gtest-md\Debug
, w zależności od lokalizacji gtestd.libgtestd.lib
Sprawdzanie, czy wszystko działa
main()
funkcję.Wklej następujący kod:
#include "stdafx.h" #include <iostream> #include "gtest/gtest.h" TEST(sample_test_case, sample_test) { EXPECT_EQ(1, 1); } int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); RUN_ALL_TESTS(); std::getchar(); // keep console window open until Return keystroke }
Debuguj> Rozpocznij debugowanie
Jeśli wszystko zadziałało, powinieneś zobaczyć okno konsoli i pokazać wyniki testów jednostkowych.
źródło
Zrobiłem samouczek wideo dotyczący konfiguracji: http://www.youtube.com/watch?v=mzSzwQOmMRs
źródło
Po zbudowaniu gtest zrobiłem to:
Następnie po prostu piszę swoje testy, używając odpowiednio TEST lub TEST_F i kompiluję je razem z moją główną funkcją:
int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
źródło
gtest_main.lib
zawiera funkcję domyślnąmain
, więc prawdopodobnie nie chcesz jej dołączać, jeślimain
jawnie napisałeś własną .Jeśli nie chcesz pisać własnej funkcji main () do testów, możesz użyć funkcji main () zdefiniowanej w gtest_main.lib, ale wtedy otrzymujesz błędy linkera „Należy zdefiniować punkt wejścia” w VS2012. W projekcie testowym ustaw ProjectProperties-> Linker-> System-> SubSystem na „Console”, ponieważ zmusi to VS2012 do wyszukania punktu wejścia o nazwie „main ()” i znajdzie go w gtest_main.lib (pod warunkiem, że połączyłeś prawidłowo).
źródło
W programie Microsoft Visual Studio błędnie skonfigurowany typ biblioteki środowiska wykonawczego powoduje błędy łącza.
VS 2005 (i 2008) domyślnie używa wielowątkowej biblioteki DLL lub wielowątkowej biblioteki debugowania DLL. Ale biblioteka Google Test domyślnie używa środowiska uruchomieniowego debugowania Mulithreaded lub Mulithreaded.
Dlatego wybierz odpowiedni typ biblioteki wykonawczej dla biblioteki testowej Google. (we Właściwościach konfiguracji -> Generowanie kodu -> Biblioteka środowiska uruchomieniowego).
źródło