Pregunta

Como dije en una pregunta anterior, estoy planeando en portar un proyecto Qt de VC ++ para QtCreator.

El proyecto consta de 4 subproyectos: 3 de ellos son libs y el último hace que el exe. Los subproyectos son capas, lo que significa que cada capa tiene compilar y dependencias de tiempo de enlace a las capas por debajo de él.

Los archivos se organizan de la siguiente manera:

root
  lib1
  lib2
  lib3
  main

He creado cada uno de los sub-proyectos en QtCreator desde cero. Cada carpeta contiene un archivo profesional con el mismo nombre (por ejemplo: LIB1 -> lib1.pro). El uso de este método que he construido todos los proyectos excepto la última que debe enlazar el ejecutable. Que estaba recibiendo errores de enlace que he fijado por la edición manual del archivo de pro y añadiendo a continuación el código:

LIBS +=  ../path/lib1.a \
   ../path/lib2.a \
   ../path/lib3.a

Todo está bien, excepto que ahora lib3 se queja de que no puede encontrar los símbolos de LIB2 y LIB1. Addind LIBS en el archivo lib2.pro no funciona.

Tengo la sensación de que ahora no recibo el camino QtCreator trabaja con librerías y ejecutables. ¿Cómo organizaría un proyecto para que se compila y enlaces correctamente?

¿Fue útil?

Solución

Después de trabajar en el problema un poco más, recordé que para la cadena de herramientas GCC el orden de los parámetros de engarce es importante.

Inversión de las entradas LIBS resolvieron el problema.

Otros consejos

Me alegra ver que has encontrado la respuesta. También es posible que desee añadir:

CONFIG += ordered

a su archivo de directorios raíz .pro (sólo es válido en el perfil '' SUBDIRS). Obliga qmake para generar Makefiles que preservan el orden en el que se han enumerado en todas las circunstancias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top