2009-06-30 10 views
6

Como dije en una pregunta anterior, planeo portar un proyecto Qt de VC++ a QtCreator.Proyecto QtCreator con múltiples libs y un exe

El proyecto consta de 4 subproyectos: 3 de ellos son libs y el último hace el exe. Los subproyectos están superpuestos, lo que significa que cada capa tiene dependencias de compilación y tiempo de enlace con las capas que se encuentran debajo.

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 pro con el mismo nombre (por ejemplo, lib1 -> lib1.pro). Usando este enfoque, he creado todos los proyectos, excepto el último que debe vincular el ejecutable. Que estaba recibiendo errores de enlace que he fijado por la edición manual del archivo de pro y añadiendo el código de abajo:

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 no estoy obteniendo la forma en que QtCreator funciona con libs y ejecutables. ¿Cómo organizarías un proyecto así para que compila y enlaces correctamente?

Respuesta

4

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

Invertir las entradas LIBS hizo el truco.

3

Me complace verte la respuesta. También es posible que desee agregar:

CONFIG += ordered 

a sus directorios raíz .pro archivo (sólo es válido en el perfil '' SUBDIRS). Obliga a qmake a generar Makefiles que conservan el orden en el que los enlistas en todas las circunstancias.

+0

Sí, encontré esta opción en los documentos y la estoy usando en este momento. Lo bueno es que puedo cargar todo mi proyecto a la vez, la parte mala es que no puedo compilar cada lib de manera individual. :-) – rpg

Cuestiones relacionadas