Чому для тесту Google не встановлено бібліотечних файлів?


54

Пакет libgtest-dev, здається, встановлює в систему лише файли заголовків, але не статичні та динамічні бібліотеки, які слід встановити під / usr / lib.

Це помилка?


2
Оскільки це навмисно, це не помилка; але ситуація надзвичайно заплутана. Тому я подав звіт про помилку на bugs.debian.org/cgi-bin/bugreport.cgi?bug=802587 .
Йоахім Ш

Тьфу ... чи є тестова рамка "boost"?
Ендрю Вагнер

Відповіді:


70

Це помилка?

Ні, це навмисно:

gtest (1.6.0-1ubuntu2) точний; терміновість = низька

  * Перестаньте розповсюджувати статичну бібліотеку (хоч і досі її створюєте, щоб забезпечити gtest
    твори). Вгору за течією рекомендує взагалі не перевозити Бібліотеку, а саме
    джерело. (Див.: Http://code.google.com/p/googletest/wiki/FAQ)
    Підтримувач Debian також планує це зробити (див. BTS: 639795); зробіть це в
    Тепер Ubuntu виконує вимоги MIR.

Для побудови статичних бібліотек

cd / usr / src / gtest
судо cmake.
зробити судо
sudo mv libg * / usr / lib /

Редагувати:

Імена з часом дещо змінилися, хоча процес залишається тим самим. В Ubuntu 17.04:

sudo apt-get install libgtest-dev
cd /usr/src/googletest/googletest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo cp libgtest* /usr/lib/
cd ..
sudo rm -rf build

Дякую! Я створив бібліотеки таким чином. Просто подумав, що це може бути не офіційний підхід для пакету .deb.
eddyxu

1
Google працює таємничими способами! :) Рада, що це допомогло.
Іш

2
Копіювати-вставити версію:cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv libg* /usr/lib/ && cd -
exic

2
Фактично описана тут причина може бути застосована до будь-якої бібліотеки. Наприклад, якщо boost пов'язаний з libstdc ++ і ви хочете використовувати libc ++, вам потрібно перекомпілювати прискорення з джерел. Так це дивно, ІМХО
русло

7
Це відлякуючий асинін. Чому б, чорт, не доставити бібліотеку для джерела? Або хоча б попросіть встановити пакет, створити його автоматично.
Підроблене ім’я

23

Удосконалюючи відповідь izx, я би використав cmake таким чином:

sudo cmake -DCMAKE_BUILD_TYPE=RELEASE .

і я б спробував побудувати вихідне джерело:

cd /tmp
mkdir .build
cd .build
cmake -DCMAKE_BUILD_TYPE=RELEASE /usr/src/gtest/
make
sudo mv libg* /usr/lib/

0

Зауважте, що рекомендованим способом google є те, щоб ваш існуючий проект втягнув найвищий вихідний код.

Крім того, при використанні з CMake ви можете add_subdirectoryдодати джерело gtest, яке було в комплекті, libgtest-devоскільки воно за замовчуванням переходить /usr/src/googletest.

Далі буде працювати

add_subdirectory(/usr/src/googletest gtest)
target_link_libraries(your_executable gtest)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.