GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur googleTest sebagai perpustakaan bersama di Linux

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

Untuk menginstal paket di ~/usr/gtest/ sebagai pustaka bersama, bersama dengan contoh build 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 test.c berikut sebagai contoh pengujian 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 

Sebelum memulai, pastikan Anda telah membaca dan memahami catatan ini dari Google! Tutorial ini membuat penggunaan gtest menjadi mudah, tetapi dapat menimbulkan bug yang tidak menyenangkan.

1. Dapatkan framework googletest

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

Atau mendapatkannya dengan tangan. Saya tidak akan mempertahankan Petunjuk kecil ini, jadi jika Anda menemukannya dan tautannya sudah usang, jangan ragu untuk mengeditnya.

2. Buka paket dan buat pengujian 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 lib di sistem Anda.

Langkah ini mungkin berbeda dari distro ke distro, jadi pastikan Anda menyalin header dan lib di direktori yang benar. Saya menyelesaikan ini dengan memeriksa di mana letak lib gtest Debian sebelumnya. Tapi saya yakin ada cara yang lebih baik untuk melakukannya.

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. Perbarui cache penaut

... dan periksa apakah GNU Linker mengetahui libs

sudo ldconfig -v | grep gtest

Jika hasilnya terlihat seperti ini:

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

maka semuanya baik-baik saja.

gTestframework sekarang siap digunakan. Jangan lupa untuk menautkan proyek Anda ke perpustakaan dengan menyetel -lgtest sebagai flag linker dan secara opsional, jika Anda tidak menulis mainroutine pengujian Anda sendiri, -lgtest_main eksplisit bendera.

Dari sini Anda mungkin ingin membuka dokumentasi Google, dan dokumen lama tentang kerangka kerja untuk mempelajari cara kerjanya. Selamat membuat kode!

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


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 mengompilasi kode sendiri untuk membuat file pustaka yang diperlukan. File sumber ini harus ditempatkan di /usr/src/gtest. Jelajahi folder ini dan gunakan cmake untuk mengompilasi pustaka:

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

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

-lgtest -lgtest_main -lpthread

Ini bekerja dengan sempurna untuk saya di Ubuntu 14.04LTS.


Linux
  1. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  2. Pengantar Pustaka Bersama Linux (Cara Membuat Pustaka Bersama)

  3. Cara membuat penundaan perpustakaan bersama dimuat di Linux

  1. Cara Memasang Pustaka Ncurses Di Linux

  2. Cara mengatur jail chroot Linux

  3. Cara Mengatur atau Mengubah Zona Waktu di Linux

  1. Cara Mengatur Variabel $Path di Linux

  2. Cara menginisialisasi perpustakaan bersama di Linux

  3. Bagaimana cara membuat versi perpustakaan bersama di Linux?