Почему не установлены файлы библиотеки для теста Google?

54

Пакет libgtest-dev, похоже, устанавливает в систему только заголовочные файлы, но не статические и динамические библиотеки, которые должны быть установлены в / usr / lib.

Это ошибка?

eddyxu
источник
2
Так как это преднамеренно, это не ошибка; все же ситуация совершенно запутанная. Поэтому я отправил отчет об ошибке на bugs.debian.org/cgi-bin/bugreport.cgi?bug=802587 .
Иоахим W
тьфу ... фреймворк Boost "просто работает"?
Эндрю Вагнер,

Ответы:

70

Это ошибка?

Нет, это намеренно

gtest (1.6.0-1ubuntu2) точный; Актуальность = низкий

  * Перестать распространять статическую библиотеку (хотя все равно собирать ее, чтобы обеспечить gtest
    работает). Upstream рекомендует вообще не отправлять библиотеку, только
    источник. (См .: http://code.google.com/p/googletest/wiki/FAQ).
    Сопровождающий Debian планирует сделать это также (см. BTS: 639795); сделать это в
    Ubuntu теперь, чтобы выполнить требования MIR.

Создавать статические библиотеки

cd / usr / src / gtest
sudo 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 ++, вам нужно перекомпилировать boost из исходников. Так что это странно, ИМХО
русло
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 состоит в том, чтобы ваш существующий проект извлек исходный код gtest.

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

Следующее будет работать

add_subdirectory(/usr/src/googletest gtest)
target_link_libraries(your_executable gtest)
Руфус
источник