c++ - programacion - ¿Cómo hacer que Qt y Qtcreator vinculen las bibliotecas estáticamente en lugar de dinámicas?
librerias estaticas y dinamicas c++ (1)
Puede usar la variable CONFIG
para esto con qmake:
CONFIG += static
o
CONFIG += staticlib
Sin embargo, deberá asegurarse de tener todas las bibliotecas que desea agrupar, disponibles como estáticas.
Esto también incluye el marco Qt mismo si cumple con la licencia para hacerlo. La instalación oficial solo configura bibliotecas dinámicas (archivos .dll), por lo que necesitaría construir Qt por su cuenta para lograr esto.
Puede usar los siguientes comandos para construir Qt
estáticamente para su propio propósito:
configure -developer-build -opensource -nomake examples -nomake tests -static
qmake -r
nmake
Tenga en cuenta que, en general, cuando cree software Qt de terceros como el suyo, mejor invoque qmake
con el siguiente parámetro para pasar su entorno correctamente:
qmake -r -spec win32-msvc2010
También notó que como Frank y ManuelH escribieron en el comentario, no se permite el enlace estático si su aplicación no tiene licencia gratuita, ya sea LGPL o al menos compatible con LGPL, ni usa licencia comercial para Qt. Es mejor asegurarse de esto antes de retomar su enfoque.
Una vez hecho esto, puede usar la variable LIBS
de la manera habitual, como en: pasar la ruta de su biblioteca estática junto con el nombre de la biblioteca, por lo que algo como esto:
LIBS += -L/path/to/the/static/library -lstaticlibraryname
Tenga en cuenta que el nombre de la biblioteca estática que se pasa al parámetro -l
no debe contener la extensión de la biblioteca estática, por ejemplo .lib
en Windows.
Como alternativa, siempre puede vincular estáticamente otras bibliotecas y colocar los archivos dt dll al lado del ejecutable, e implementar la carpeta como un "paquete". Esa es probablemente la forma más fácil de ir.
Esta pregunta ya tiene una respuesta aquí:
- Qt static linking and deployment 6 respuestas
Sé que podría ser una pregunta similar a muchas otras, pero después de buscar muchas veces y al no obtener una solución definitiva y efectiva, tengo que hacer esta pregunta.
Estoy usando Qt 5.2.0 para Windows de 32 bits (VS 2010, 570 MB) , y ya hice mi programación y ya está todo hecho. Pero ahora quiero distribuirlo como un archivo .exe a mis colegas, pero para hacerlo sin complicaciones y para evitar tener que distribuir archivos dll, necesito construir el programa utilizando enlaces estáticos.
¿Podría describir cómo puedo hacer que Qt 5.2.0 para Windows de 32 bits (VS 2010, 570 MB) construya todo el programa utilizando enlaces estáticos?
Gracias.