2010-02-19 17 views
9

Tengo una biblioteca compartida (sin dependencia de QT) [biblioteca B] que se vincula a otra biblioteca compartida (sin dependencia de QT) [biblioteca UN].construyendo con qmake en Linux - cómo evitar que qmake se vincule con QtCore y QtGui

Estoy usando Qmake y QT Creator 1.3. El problema es que cuando construyo la biblioteca B y ejecuto ldd en el ejecutable, se está vinculando a QtCore y QtGui, los cuales están extrayendo muchos archivos no requeridos, lo que da como resultado un archivo ejecutable que tarda mucho en cargarse y no se ha deseado. dependencias.

he intentado todo para detener qmake de la vinculación de estas bibliotecas a la biblioteca de B.

Un fragmento de mi archivo de proyecto para la biblioteca B se muestra a continuación:

TEMPLATE = lib 
LIBS += -L../datelib/bin -ldatelib_release 

QT -= gui core 
LIBS -= -lQtGui -lQtCore 
CONFIG += dll 
CONFIG += debug_and_release 

CONFIG(debug, debug|release) { 
TARGET =targetnameD 
}else { 
TARGET = targetname 
} 

estoy usando QtCreator 3 en Ubuntu 9.10

QT es la versión 4.5.2

+0

¿Qué versión de Qt? Intenté con 4.6.1 y con Qt - = core gui el Makefile creado por qmake no incluía las DLL Qt, eliminando esta línea que las incluía en el Makefile. –

Respuesta

3

Usted puede tratar con

CONFIG += dll 
QT  -= gui core 
LIBS -= -lQtGui -lQtCore 
+0

He marcado su respuesta, porque al menos me dio la confianza para ver más de cerca lo que realmente se estaba creando, y entonces me di cuenta de que (a diferencia de otros proyectos que estaban configurados para liberar la configuración por defecto), este proyecto se estableció por defecto: de hecho no había otra configuración mostrada por QtCreator aunque la sintaxis del archivo (sección de configuración de .pro) es idéntica a los otros proyectos. ¿Sabes lo que podría estar causando esto? –

+0

Mire y/o elimine el archivo yourporjectname.pro.user. –

+0

@Mihai: esto fue lo primero que hice (antes de publicar mi pregunta), no hizo ninguna diferencia. –

0

Por lo que yo sé, el creador de Qt no tiene en cuenta las configuraciones .pro si no las tiene configuradas por separado del IDE.

Debe ir a la configuración del proyecto, clonar la configuración de depuración, renombrarla liberar, establecer la configuración de compilación de QMake para liberar (!) Y cambiar otras configuraciones como mejor le parezca. Luego puede elegir qué configuración construir desde el IDE.

P.S: intente utilizar Qt Creator 1.3.1 ya que soluciona muchos errores y ofrece nuevas funciones interesantes.

+0

Hmm, parece haber sido un error 1.2.1. Después de instalar v3, el problema desapareció ... Pero por lo que sé para el futuro, cuando quiero crear mi propia configuración, ¿podría indicar los pasos requeridos en la "clonación" una configuración existente para crear una nueva? –

+0

Vaya a Proyectos> Configuraciones de compilación> Agregar> Clonar seleccionado. A continuación, seleccione la nueva configuración (por ejemplo, Versión) y amplíe el paso de creación de QMake. Establezca la configuración de compilación de QMake para su lanzamiento y listo. – rpg

10

Ponga CONFIG -= qt en su archivo .pro.

+0

Eso no funcionó bien:/ –

+1

funciona aquí. Este es el método utilizado para los proyectos en el árbol de código fuente de Qt que no enlazarse contra Qt. En general, funciona. Consulte 'src/winmain/winmain.pro' en el árbol de fuentes de Qt para ver un ejemplo. ¿Puede una doble comprobación: (1) que realmente ejecutó qmake nuevo y reconstruido todo (hace una compilación completamente limpio después de ejecutar qmake). (2) Ninguna de las bibliotecas que enlace a sí mismos en contra son el ligado con libQtCore o libQtGui (por ejemplo 'datelib_release' no tienen que enlazar con Qt). – rohanpm

1

Tuve un problema similar. Lo que hice fue crear un nuevo proyecto de biblioteca sin qtcore y qtgui. Se eliminaron todos los archivos innecesarios creados por el asistente. Agregué mis archivos a la carpeta del proyecto y modifiqué el archivo * .pro. Comenzó a funcionar correctamente.

Hubo algún problema con QtCreator, no se leyó correctamente el archivo .pro que genera .pro.user, wt QtCreator utiliza para compilar y el asistente genera el archivo .pro.user correcto.

Hice esto con Qt 4.7

Wish esta ayuda.

2

Para aplicaciones, lo haces de esta manera:

TEMPLATE = app 
CONFIG = console 

Más información aquí: qmake common projects

Cuestiones relacionadas