c++ - library - SFML no enlaza estáticamente a openal32(enlaces estáticos a todas las demás dependencias)
sfml visual (1)
No soy abogado (y no me quedé en una cadena hotelera popular anoche).
La implementación OpenAL que están utilizando está licenciada bajo la Licencia Pública General de la Biblioteca GNU (LGPL), versión 2 . LGPL v2 requiere que:
Si vincula un programa con la biblioteca, debe proporcionar archivos de objetos completos a los destinatarios para que puedan volver a vincularlos con la biblioteca, después de realizar cambios en la biblioteca y volver a compilarla. Y debe mostrarles estos términos para que sepan sus derechos.
La forma más sencilla de permitir a los usuarios volver a vincular un juego de código cerrado con una biblioteca OpenAL modificada es hacer que ese juego se vincule dinámicamente con openal32.dll
. De esta forma, pueden simplemente cambiar el openal32.dll
por uno modificado y colocarlo junto al ejecutable del juego.
En cuanto a esta parte de la licencia:
Y debe mostrarles estos términos para que sepan sus derechos.
Simplemente informe a sus usuarios que su juego usa OpenAL, y de alguna manera déles acceso al cuerpo del texto LGPL v2.
Puede distribuir openal32.dll
con su juego, bajo estas condiciones:
Por ejemplo, si distribuye copias de la biblioteca, ya sea de manera gratuita o por una tarifa, debe otorgar a los destinatarios todos los derechos que le otorgamos. Debe asegurarse de que ellos también reciban o puedan obtener el código fuente.
Esto se puede cumplir simplemente informando a los usuarios que su juego usa OpenAL y proporcionando un enlace para que puedan descargar el código fuente.
Para informar a sus usuarios sobre sus derechos con respecto a OpenAL, puede hacerlo en una página "Acerca de" dentro del juego, o en un prefacio / apéndice del manual del juego distribuido. Por ejemplo:
Este juego usa el siguiente software de código abierto:
- OpenAL Soft: http://openal-soft.org/
Y mientras informa a sus usuarios de OpenAL, también podría ofrecerse como voluntario para otorgar atribuciones a otras bibliotecas de código abierto que su juego utiliza, como SFML.
Recopilé SFML usando CMake para MinGW. Después de ejecutar "mingw32-make install" todo está construido e instalado sin errores. Pero al ejecutar los ejemplos, pong.exe, sound.exe, sound-capture.exe y voip.exe dependen de openal32.dll
.
Especifiqué SFML_USE_STATIC_LIBS = true
al configurar CMake y todas las demás dependencias de los archivos ejecutables de ejemplo están solo en windows dlls nativos.
¿Alguien puede explicar por qué se ha vinculado dinámicamente a openal32 (pero nada más)?
Editar: Acabo de encontrar este hilo http://en.sfml-dev.org/forums/index.php?topic=262.0 que está discutiendo exactamente el mismo problema. Pensé (ya que esto es de 2008) que esto ya se habría implementado. ¿O todavía está en la misma situación?
Editar 2: las respuestas aquí http://en.sfml-dev.org/forums/index.php?topic=18119.0 indicarían que OpenAL debe vincularse dinámicamente debido a la licencia. ¿Alguien puede confirmar si la licencia permite o no la distribución de openal32.dll con el ejecutable?