Por que nenhum arquivo de biblioteca instalado para o teste do google?

54

O pacote libgtest-dev parece apenas instalar arquivos de cabeçalho no sistema, mas não as bibliotecas estáticas e dinâmicas que devem ser instaladas em / usr / lib.

Isso é um bug?

eddyxu
fonte
2
Como é intencional, não é um bug; no entanto, a situação é totalmente confusa. Portanto, enviei um relatório de bug em bugs.debian.org/cgi-bin/bugreport.cgi?bug=802587 .
Joachim W
ugh ... o framework de testes do boost "simplesmente funciona"?
Andrew Wagner

Respostas:

70

Isso é um bug?

Não, é deliberado:

gtest (1.6.0-1ubuntu2) preciso; urgência = baixa

  * Pare de distribuir a biblioteca estática (embora ainda a construa, para garantir que o gtest
    trabalho). A montante recomenda contra o envio da biblioteca, apenas o
    fonte. (Veja: http://code.google.com/p/googletest/wiki/FAQ)
    O mantenedor do Debian planeja fazer isso também (veja BTS: 639795); faça isso em
    Ubuntu agora para atender aos requisitos de MIR.

Para construir bibliotecas estáticas

cd / usr / src / gtest
sudo cmake.
sudo make
sudo mv libg * / usr / lib /

Editar:

Os nomes mudaram um pouco ao longo dos anos, embora o processo permaneça o mesmo. No 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
ish
fonte
Obrigado! Eu construí as bibliotecas dessa maneira. Apenas pensei que poderia não ser uma abordagem oficial para um pacote .deb.
eddyxu
11
O Google trabalha de maneiras misteriosas! :) Fico feliz que ajudou.
Ish
2
Versão copiar e colar:cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv libg* /usr/lib/ && cd -
exic 16/01
2
Na verdade, o motivo descrito aqui pode ser aplicado a qualquer biblioteca. Por exemplo, se o boost estiver vinculado ao libstdc ++ e você quiser usar o libc ++, precisará recompilar o boost a partir das fontes. Então é estranho, IMHO
ruslo 23/10/2013
7
Isso é uma loucura. Por que diabos eles não enviavam a biblioteca para a fonte? Ou, pelo menos, faça com que o pacote seja instalado automaticamente.
Fake Name
23

Melhorando a resposta do izx, eu teria usado o cmake desta maneira:

sudo cmake -DCMAKE_BUILD_TYPE=RELEASE .

e eu tentaria uma compilação fora da fonte:

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

Observe que a maneira recomendada pelo google é fazer com que seu projeto existente extraia o código-fonte gtest.

Como alternativa, ao usar com o CMake, você pode add_subdirectoryadicionar a fonte gtest que vem libgtest-devdesde que por padrão entra /usr/src/googletest.

O seguinte funcionará

add_subdirectory(/usr/src/googletest gtest)
target_link_libraries(your_executable gtest)
Rufus
fonte