GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit googleTest jako sdílenou knihovnu v Linuxu

Chvíli mi trvalo, než jsem na to přišel, protože normální "make install" bylo odstraněno a já cmake nepoužívám. Zde se podělím o své zkušenosti. V práci nemám v Linuxu přístup root, takže jsem si nainstaloval testovací rámec Google do svého domovského adresáře:~/usr/gtest/ .

Chcete-li nainstalovat balíček do ~/usr/gtest/ jako sdílené knihovny, společně s ukázkovým sestavením:

$ mkdir ~/temp
$ cd ~/temp
$ unzip gtest-1.7.0.zip 
$ cd gtest-1.7.0
$ mkdir mybuild
$ cd mybuild
$ cmake -DBUILD_SHARED_LIBS=ON -Dgtest_build_samples=ON -G"Unix Makefiles" ..
$ make
$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib

Pro ověření instalace použijte následující test.c jako jednoduchý testovací příklad:

    #include <gtest/gtest.h>
    TEST(MathTest, TwoPlusTwoEqualsFour) {
        EXPECT_EQ(2 + 2, 4);
    }

    int main(int argc, char **argv) {
        ::testing::InitGoogleTest( &argc, argv );
        return RUN_ALL_TESTS();
    }

Kompilace:

    $ export GTEST_HOME=~/usr/gtest
    $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
    $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp 

Než začnete, ujistěte se, že jste si přečetli tuto poznámku od Googlu a porozuměli jí! Tento tutoriál usnadňuje používání gtestu, ale může obsahovat nepříjemné chyby.

1. Získejte framework googletest

wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz

Nebo si to vezměte ručně. Tento malý návod nebudu udržovat, takže pokud jste na něj narazili a odkazy jsou zastaralé, klidně jej upravte.

2. Rozbalte a vytvořte test Google

tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make

3. "Nainstalujte" hlavičky a knihovny na váš systém.

Tento krok se může u jednotlivých distribucí lišit, takže se ujistěte, že zkopírujete záhlaví a knihovny do správného adresáře. Dosáhl jsem toho tak, že jsem zkontroloval, kde byly umístěny bývalé knihovny gtest Debians. Ale jsem si jistý, že existují lepší způsoby, jak to udělat.

sudo cp -a googletest/include/gtest /usr/include
sudo cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/

# The easiest/best way:
make install  # Note: before v1.11 this can be dangerous and is not supported

4. Aktualizujte mezipaměť linkeru

... a zkontrolujte, zda GNU Linker zná libs

sudo ldconfig -v | grep gtest

Pokud výstup vypadá takto:

libgtest.so.0 -> libgtest.so.0.0.0
libgtest_main.so.0 -> libgtest_main.so.0.0.0

pak je vše v pořádku.

gTestframework je nyní připraven k použití. Jen nezapomeňte propojit svůj projekt s knihovnou nastavením -lgtest jako příznak linkeru a volitelně, pokud jste nenapsali svůj vlastní testovací hlavní program, explicitní -lgtest_main vlajka.

Od této chvíle možná budete chtít přejít na dokumentaci Google a staré dokumenty o frameworku, kde se dozvíte, jak to funguje. Hodně štěstí při kódování!

Upravit: Toto funguje i pro OS X! Viz „Jak správně nastavit googleTest v OS X“


Dovolte mi odpovědět konkrétně pro uživatele ubuntu. Nejprve začněte instalací vývojového balíčku gtest.

sudo apt-get install libgtest-dev

Všimněte si, že tento balíček instaluje pouze zdrojové soubory. Abyste vytvořili potřebné soubory knihovny, musíte kód zkompilovat sami. Tyto zdrojové soubory by měly být umístěny v /usr/src/gtest. Přejděte do této složky a pomocí cmake zkompilujte knihovnu:

sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo make install

Chcete-li nyní zkompilovat své programy, které používají gtest, musíte jej propojit s:

-lgtest -lgtest_main -lpthread

Na Ubuntu 14.04LTS mi to fungovalo perfektně.


Linux
  1. Jak nastavit nebo změnit název hostitele systému v systému Linux

  2. Jak nastavit nebo změnit časové pásmo v Linuxu

  3. Jak nastavit proměnnou $Path v Linuxu

  1. Jak nainstalovat knihovnu Ncurses v Linuxu

  2. Jak nastavit linuxové chroot vězení

  3. Úvod do sdílených knihoven Linuxu (Jak vytvořit sdílené knihovny)

  1. Jak inicializovat sdílenou knihovnu v Linuxu

  2. Jak udělat verzování sdílené knihovny v Linuxu?

  3. Jak vytvořit zpoždění sdílené knihovny načtené v systému Linux