Pertanyaan Cara menyiapkan googleTest sebagai pustaka bersama di Linux


Debian tidak menyediakan paket dikompilasi untuk gTest lagi. Mereka menyarankan Anda untuk mengintegrasikan kerangka kerja ke dalam proyek Anda makefile. Tetapi saya ingin menjaga file make saya tetap bersih. Bagaimana cara mengatur gTest seperti versi sebelumnya (<1.6.0), sehingga saya dapat menautkan aganis pustaka?


76
2017-11-22 13:38


asal


Jawaban:


Sebelum Anda mulai pastikan Anda telah membaca dan mengerti catatan ini dari Google! Tutorial ini membuat penggunaan gtest mudah, tetapi mungkin memperkenalkan bug jahat.

1. Dapatkan kerangka kerja googletest

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

Atau dapatkan dengan tangan. Saya tidak akan mempertahankan How-to kecil ini, jadi jika Anda menemukan itu dan tautannya sudah ketinggalan jaman, silakan edit.

2. Mengekstrak dan membangun uji google

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

3. "Instal" header dan libs pada sistem Anda.

Langkah ini mungkin berbeda dari distro ke distro, jadi pastikan Anda menyalin header dan libs di direktori yang benar. Saya menyelesaikan ini dengan memeriksa di mana Debian mantan gtest libs berada. Tetapi saya yakin ada cara yang lebih baik untuk melakukan ini. catatan: make install berbahaya dan tidak didukung

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

4. Perbarui cache penaut

... dan periksa apakah GNU Linker mengetahui libs

$ sudo ldconfig -v | grep gtest

Jika output terlihat seperti ini:

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

, semuanya baik-baik saja.

gTestframework sekarang siap digunakan. Jangan lupa untuk menautkan proyek Anda dengan perpustakaan dengan pengaturan -lgtest sebagai flag penghubung dan secara opsional, jika Anda tidak menulis uji mainroutine Anda sendiri, yang eksplisit -lgtest_main bendera.

Mulai sekarang Anda mungkin ingin pergi ke Googles dokumentasi tentang kerangka kerja untuk mempelajari cara kerjanya. Selamat coding!

Edit: Ini berfungsi untuk OS X juga! Lihat "Cara menyiapkan googleTest dengan benar di OS X"


125
2017-11-22 13:38



Butuh beberapa saat untuk mencari tahu ini karena "make install" yang normal telah dihapus dan saya tidak menggunakan cmake. Inilah pengalaman saya untuk berbagi. Di tempat kerja, saya tidak memiliki akses root di Linux, jadi saya menginstal kerangka pengujian Google di direktori home saya: ~/usr/gtest/.

Untuk menginstal paket di ~ / usr / gtest / sebagai pustaka bersama, bersama dengan pembuatan contoh juga:

$ 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

Untuk memvalidasi penginstalan, gunakan tes berikut.c sebagai contoh uji sederhana:

    #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();
    }

Untuk mengkompilasi:

    $ 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 

24
2018-01-23 16:33



Biarkan saya menjawab ini khusus untuk pengguna ubuntu. Pertama mulai dengan menginstal paket pengembangan gtest.

sudo apt-get install libgtest-dev

Perhatikan bahwa paket ini hanya menginstal file sumber. Anda harus mengkompilasi kode sendiri untuk membuat file pustaka yang diperlukan. File sumber ini harus ditempatkan di / usr / src / gtest. Browse ke folder ini dan gunakan cmake untuk mengkompilasi pustaka:

sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make

# copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
sudo cp *.a /usr/lib

Sekarang untuk mengkompilasi program Anda yang menggunakan gtest, Anda harus menghubungkannya dengan:

-lgtest -lgtest_main

Ini bekerja dengan sempurna untuk saya di Ubuntu 14.04LTS.


16
2018-01-31 09:43



Jika Anda menggunakan CMake, Anda dapat menggunakannya ExternalProject_Add seperti yang dijelaskan sini.

Ini menghindari Anda harus menyimpan kode sumber gtest di repositori Anda, atau memasangnya di mana saja. Ini diunduh dan dibangun di pohon build Anda secara otomatis.


7
2017-11-22 13:51



Saya sama-sama kewalahan oleh situasi ini dan akhirnya membuat paket source Ubuntu saya sendiri untuk ini. Paket sumber ini memungkinkan Anda dengan mudah menghasilkan paket biner. Mereka didasarkan pada sumber gtest & gmock terbaru pada posting ini.

Google Uji Paket Sumber DEB

Paket Sumber DEB Google Mock

Untuk membangun paket biner, lakukan ini:

tar -xzvf gtest-1.7.0.tar.gz
cd gtest-1.7.0
dpkg-source -x gtest_1.7.0-1.dsc
cd gtest-1.7.0
dpkg-buildpackage

Ini dapat memberitahu Anda bahwa Anda memerlukan beberapa paket pra-syarat dalam hal ini Anda hanya perlu menginstalnya. Selain itu, paket binari .deb kemudian harus diletakkan di direktori induk.

Untuk GMock, prosesnya sama.

Sebagai catatan tambahan, meski tidak spesifik untuk paket sumber saya, saat menautkan gtest ke uji unit Anda, pastikan bahwa gtest disertakan lebih dulu (https://bbs.archlinux.org/viewtopic.php?id=156639) Ini sepertinya gotcha yang umum.


1
2018-03-26 13:32



Untuk berjaga-jaga jika ada orang lain yang mengalami situasi yang sama seperti saya kemarin (2016-06-22) dan juga tidak berhasil dengan pendekatan yang sudah diposting - di Lubuntu 14.04 itu berhasil bagi saya menggunakan rangkaian perintah berikut:

git clone https://github.com/google/googletest
cd googletest
cmake -DBUILD_SHARED_LIBS=ON .
make
cd googlemock
sudo cp ./libgmock_main.so ./gtest/libgtest.so gtest/libgtest_main.so ./libgmock.so /usr/lib/
sudo ldconfig

1
2018-06-23 14:30



Jawaban dari askubuntu inilah yang berhasil untuk saya. Tampaknya lebih sederhana daripada opsi lain yang kurang rawan kesalahannya, karena menggunakan paket libgtest-dev untuk mendapatkan sumber dan membangun dari sana: https://askubuntu.com/questions/145887/why-no-library-files-installed-for-google-test?answertab=votes#tab-top

Silakan merujuk ke jawaban itu, tetapi hanya sebagai cara pintas saya memberikan langkah-langkah di sini juga:

sudo apt-get install -y libgtest-dev
sudo apt-get install -y cmake
cd /usr/src/gtest
sudo cmake .
sudo make
sudo mv libg* /usr/lib/

Setelah itu, saya bisa membangun proyek saya yang bergantung pada gtest tanpa masalah.


1
2017-12-24 07:09



Ini akan menginstal google test dan mock library dalam sistem berbasis Ubuntu / Debian:

sudo apt-get install google-mock

Diuji di google cloud dalam gambar berbasis debian.


0
2017-11-11 22:42



Ini akan membangun dan memasang gtest dan gmock 1.7.0:

mkdir /tmp/googleTestMock
tar -xvf googletest-release-1.7.0.tar.gz -C /tmp/googleTestMock
tar -xvf googlemock-release-1.7.0.tar.gz -C /tmp/googleTestMock
cd /tmp/googleTestMock
mv googletest-release-1.7.0 gtest
cd googlemock-release-1.7.0
cmake -DBUILD_SHARED_LIBS=ON .
make -j$(nproc)
sudo cp -a include/gmock /usr/include
sudo cp -a libgmock.so libgmock_main.so /usr/lib/
sudo cp -a ../gtest/include/gtest /usr/include
sudo cp -a gtest/libgtest.so gtest/libgtest_main.so /usr/lib/
sudo ldconfig

0
2018-01-04 10:50