¿Por qué no hay archivos de biblioteca instalados para Google Test?

54

El paquete libgtest-dev parece solo instalar archivos de encabezado en el sistema, pero no las bibliotecas estáticas y dinámicas que deberían instalarse en / usr / lib.

¿Es un error?

eddyxu
fuente
2
Como es intencional, no es un error; Sin embargo, la situación es completamente confusa. Por lo tanto, presenté un informe de error en bugs.debian.org/cgi-bin/bugreport.cgi?bug=802587 .
Joachim W
ugh ... ¿el marco de prueba de boost "simplemente funciona"?
Andrew Wagner

Respuestas:

70

¿Es un error?

No, es deliberado:

gtest (1.6.0-1ubuntu2) preciso; urgencia = baja

  * Deje de distribuir la biblioteca estática (aunque todavía la construye, para garantizar gtest
    trabajos). Upstream recomienda no enviar la biblioteca en absoluto, solo el
    fuente. (Ver: http://code.google.com/p/googletest/wiki/FAQ)
    El mantenedor de Debian planea hacer esto también (ver BTS: 639795); hazlo en
    Ubuntu ahora para cumplir con los requisitos de MIR.

Para construir bibliotecas estáticas

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

Editar:

Los nombres han cambiado ligeramente a lo largo de los años, aunque el proceso sigue siendo el mismo. En 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
fuente
¡Gracias! He construido las bibliotecas de esta manera. Solo pensé que podría no ser un enfoque oficial para un paquete .deb.
eddyxu
1
¡Google funciona de maneras misteriosas! :) Me alegro de que haya ayudado.
ish
2
Versión de copiar y pegar:cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv libg* /usr/lib/ && cd -
Méxic
2
En realidad, la razón descrita aquí se puede aplicar a cualquier biblioteca. Por ejemplo, si boost está vinculado con libstdc ++ y desea utilizar libc ++, debe volver a compilar el impulso desde las fuentes. Así que es extraño, en mi humilde opinión
ruslo
77
Esto está volviendo loco. ¿Por qué demonios no enviarían la biblioteca a la fuente? O al menos haga que la instalación del paquete lo compile automáticamente.
Nombre falso
23

Mejorando la respuesta de izx, habría usado cmake de esta manera:

sudo cmake -DCMAKE_BUILD_TYPE=RELEASE .

e intentaría una compilación fuera de la fuente:

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

Tenga en cuenta que la forma recomendada por Google es hacer que su proyecto existente extraiga el código fuente gtest.

Alternativamente, cuando se usa con CMake, puede usar add_subdirectorypara agregar la fuente gtest que viene con la que viene libgtest-devpor defecto /usr/src/googletest.

Lo siguiente funcionará

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