Как настроить googleTest в качестве общей библиотеки в Linux

Debian больше не предоставляет никаких предварительно скомпилированных пакетов для gTest. Они предлагают вам интегрировать фреймворк в make-файл ваших проектов. Но я хочу сохранить мой файл make в чистоте. Как мне настроить gTest как предыдущие версии (<1.6.0), чтобы я мог связать аганиста с библиотекой?

78

Решение

Прежде чем начать, убедитесь, что вы прочитали и поняли
это примечание от Google! Это руководство упрощает использование gtest, но может неприятные ошибки.

1. Получить каркас Googletest

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

Или получить это по рука. Я не буду поддерживать этот маленький How-to, поэтому, если вы наткнулись на него и ссылки устарели, не стесняйтесь редактировать его.

2. Распаковать и собрать тест Google

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

3. «Установите» заголовки и библиотеки в вашей системе.

Этот шаг может отличаться от дистрибутива к дистрибутиву, поэтому убедитесь, что вы скопировали заголовки и библиотеки в правильный каталог. Я сделал это, проверив, где Debians бывшие gtest libs были расположены. Но я уверен, что есть лучшие способы сделать это. Замечания: make install опасно и не поддерживается

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

4. Обновите кеш компоновщика

… и проверьте, знает ли GNU Linker библиотеки

$ sudo ldconfig -v | grep gtest

Если вывод выглядит так:

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

, Все отлично.

Теперь gTestframework готов к использованию. Просто не забудьте связать свой проект с библиотекой, установив -lgtest как флаг компоновщика и, при желании, если вы не написали свою собственную тестовую программу, явное -lgtest_main флаг.

С этого момента вы можете пойти в Гугл документация о структуре, чтобы узнать, как она работает. Удачного кодирования!

Редактировать:
Это работает и для OS X! Увидеть «Как правильно настроить googleTest на OS X»

126

Другие решения

Мне потребовалось некоторое время, чтобы понять это, потому что нормальная «make install» была удалена, и я не использую cmake. Вот мой опыт, чтобы поделиться. На работе у меня нет root-доступа в Linux, поэтому я установил среду тестирования Google в своем домашнем каталоге: ~/usr/gtest/,

Чтобы установить пакет в ~ / usr / gtest / в качестве разделяемых библиотек вместе с примером сборки:

$ 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

Чтобы проверить правильность установки, используйте следующий test.c в качестве простого тестового примера:

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

Скомпилировать:

    $ 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

Позвольте мне ответить на этот вопрос специально для пользователей Ubuntu.
Сначала начните с установки пакета разработки gtest.

sudo apt-get install libgtest-dev

Обратите внимание, что этот пакет устанавливает только исходные файлы. Вы должны скомпилировать код самостоятельно, чтобы создать необходимые файлы библиотеки. Эти исходные файлы должны быть расположены в / usr / src / gtest. Перейдите в эту папку и используйте cmake для компиляции библиотеки:

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

Теперь, чтобы скомпилировать ваши программы, использующие gtest, вы должны связать его с:

-lgtest -lgtest_main

Это отлично сработало для меня на Ubuntu 14.04LTS.

22

Если вы используете CMake, вы можете использовать ExternalProject_Add как описано Вот.

Это избавит вас от необходимости хранить исходный код gtest в своем хранилище или устанавливать его где угодно. Он загружается и встраивается в ваше дерево сборки автоматически.

7

Я был так же поражен этой ситуацией и закончил тем, что делал для этого свои собственные исходные пакеты Ubuntu. Эти исходные пакеты позволяют легко создавать двоичные пакеты. Они основаны на последнем тесте & Источник gmock на этот пост.

Google Test DEB Source Package

Пакет исходного кода Google Mock DEB

Для сборки бинарного пакета сделайте это:

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

Он может сказать вам, что вам нужны некоторые обязательные пакеты, в этом случае вам просто нужно apt-get установить их.
Кроме того, встроенные двоичные пакеты .deb должны находиться в родительском каталоге.

Для GMock процесс такой же.

В качестве примечания, хотя это не относится к моим исходным пакетам, при привязке gtest к вашему модульному тесту, убедитесь, что сначала включен gtest (https://bbs.archlinux.org/viewtopic.php?id=156639)
Это похоже на обычную ошибку.

1

На всякий случай, если кто-то другой попадет в ту же ситуацию, что и я вчера (2016-06-22), а также не преуспеет с уже опубликованными подходами — on Lubuntu 14.04 это сработало для меня, используя следующую цепочку команд:

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

Этот ответ от Askubuntu — вот что сработало для меня. Кажется проще, чем другие варианты, менее подвержен ошибкам, так как использует пакет libgtest-dev получить исходники и сборки оттуда: https://askubuntu.com/questions/145887/why-no-library-files-installed-for-google-test?answertab=votes#tab-top

Пожалуйста, обратитесь к этому ответу, но для краткости я также приведу здесь шаги:

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/

После этого я мог бы построить свой проект, который зависит от gtest без проблем.

1

Это установит google test и макет библиотеки в системе на основе Ubuntu / Debian:

sudo apt-get install google-mock

Протестировано в облаке Google на изображении в Debian.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector