Domanda

Come ho detto in una domanda precedente, sto pensando di porting di un progetto di Qt da VC ++ per QtCreator.

Il progetto si compone di 4 sottoprogetti: 3 di loro sono librerie e l'ultimo si fa l'exe. Sottoprogetti sono stratificati, il che significa che ogni strato ha compilare e dipendenze temporali collegamento agli strati sottostanti.

I file sono organizzati come segue:

root
  lib1
  lib2
  lib3
  main

Ho creato ciascuno dei sottoprogetti in QtCreator da zero. Ogni cartella contiene un file Pro con lo stesso nome (es: lib1 -> lib1.pro). Usando questo approccio ho costruito tutti i progetti, tranne l'ultimo che deve collegare l'eseguibile. Mi è stato sempre errori del linker che ho fissato modificando manualmente il file di pro e aggiungendo il codice qui sotto:

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

Tutto va bene, solo che adesso lib3 lamenta che non riesce a trovare i simboli dal lib2 e lib1. Addind LIBS al file lib2.pro non funziona.

Ho la sensazione che non sto ottenendo il modo QtCreator lavora con librerie ed eseguibili. Come si organizzare un tale progetto in modo che si compila e collegamenti correttamente?

È stato utile?

Soluzione

Dopo aver lavorato sul problema un po ', mi sono ricordato che per la catena strumento GCC l'ordine dei parametri linker è importante.

Inversione le voci LIBS ha fatto il trucco.

Altri suggerimenti

Mi fa piacere vedere che hai trovato la risposta. Si consiglia inoltre di aggiungere:

CONFIG += ordered

per file delle directory principali .pro (è valida solo nel profilo 'SUBDIRS'). Costringe qmake per generare Makefile che conservano l'ordine in cui li avete elencato in tutte le circostanze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top