2013-09-01 13 views
10

Ho creato un progetto Qt in Ubuntu e tutto è andato per il meglio. Tuttavia, ho anche bisogno di distribuirlo su Windows. Usa le librerie Boost (il grande problema).Come configurare Qt Creator per utilizzare Boost in Windows

Ho cercato ore per trovare una soluzione, ma non ho avuto fortuna. Ho provato ad installare le librerie Boost e collegarlo a mingw; Penso di aver perso qualcosa. Ecco quello che ho fatto e scaricare l'ultima versione:.

1) corse \ bootstrap
2) quindi \ b2 prefix = C:. \ Spinta installare

Purtroppo non è stato installato correttamente. Ho solo 2 cartelle (bin e share) ma nessuna intestazione.

Tuttavia, qui (http://nuwen.net/) ho trovato un pacchetto (Mingw + Boost e altre librerie). Questo ha tutto ciò di cui ho bisogno.

Ora penso che il problema sia il file .pro, perché ho molti riferimenti non definiti. Ecco il file .pro con tutto quello che ho provato (alcuni hanno commentato): http://pastebin.com/pBFMTAd8

Il vostro aiuto è apprezzato!

+0

Alcuni messaggi di errore sarebbe bello. E puoi confermare che le tue librerie boost sono in C:/MinGW/lib? – Greenflow

+0

Il mio male, ecco alcuni errori: http://postimg.org/image/h4vvo8mgx/9040bd30/; e qui è il percorso C: \ MinGW \ lib: http://postimg.org/image/3lw19jdt9/ad5481f9/ – Athan

+0

Vedo solo. un aumento delle librerie. Nulla nei tuoi file .pro indica che fai una build statica. Ci sono anche i file boost .dll in questa cartella? – Greenflow

risposta

10

Ho risolto il problema da solo. Ed ecco come l'ho fatto. Prima di tutto, è necessario avere una libreria boost compilata con lo stesso compilatore che si sta usando con Qt.
Se utilizzi msvc, sei fortunato perché i ragazzi di Boost ti hanno fatto un favore e hanno compilato librerie per te. Puoi scaricarli qui: http://sourceforge.net/projects/boost/files/boost-binaries/.
Se stai usando MinGW (che viene fornito in bundle con Qt), si può fare questo:

  • add MinGW compilatore di variabile PATH di Windows:
    ~ andare al pannello di controllo e cercare System;
    ~ aggiungi il percorso di mingw (ad esempio C: \ Qt \ Tools \ mingw \ bin) alla variabile PATH aggiungendo ';' al percorso (ad esempio: "C: \ Qt \ Tools \ mingw \ bin")
  • compilazione librerie Boost:
    ~ archivio decomprimere spinta
    ~ aprire una finestra della riga di comando, andare nella cartella di spinta decompressi, quindi vai in strumenti cartella/build/v2/engine
    ~ hai installato il programma di installazione con toolset mingw:. \ build --toolset = mingw
    ~ questo creerà 2 file nella cartella bin.ntx86 o qualcosa di simile; copia i file bjam e b2 nella cartella boost decompressa;
    ~ ora vai nella cartella boost e inizia a costruirlo:. \ B2 --toolset = mingw --build-type = fase completa (c'è un buon tutorial per installarlo insieme ad eclissi: http://theseekersquill.wordpress.com/2010/08/24/howto-boost-mingw/)
    nota: questo prenderà poche ore, quindi potresti voler vedere un film o cosa vuoi fare nel frattempo. Comunque hai la possibilità di velocizzare un po 'le cose aggiungendo un altro argomento al comando build: -j N, dove N è il numero di core del tuo processore.
  • quando la compilazione è terminata, è ora possibile collegare la libreria in Qt. Per fare questo è necessario modificare il file .pro. Per prima cosa devi dire a Qt dove si trovano le intestazioni, e lo fai aggiungendo:
    INCLUDEPATH + = path_to_boost_folder, ad es. : INCLUDEPATH + = C:/boost_1_54_0
    ~ anche se stai usando librerie che richiedono link, per esempio sistema e filesystem devi collegarli separatamente:
    LIBS + = "C:/boost_1_54_0/stage/lib/libboost_filesystem -mgw48-1_54.a ",
    LIBS + =" C: /boost_1_54_0/stage/lib/libboost_system-mgw48-1_54.a "
  • dopo aver modificato il file .pro, eseguire qmake, quindi ricostruire.

Spero che questo funzioni anche per te!

Aggiornamento: la gerarchia delle cartelle è cambiata. Per creare la libreria, è necessario leggere la documentazione associata a ciascuna versione e Boost.Build's documentation. Costruire la libreria dalla cartella principale è più facile (Building Boost 1.52 with MinGW):

C:\boost_1_60_0> bootstrap.bat mingw 
C:\boost_1_60_0> .\b2 --toolset=gcc -j N --build-type=complete 
0

building boost non inserisce le intestazioni, le intestazioni sono per lo sviluppatore quando crea un nuovo codice. Le dir installate sono i binari per la distribuzione.

vedere http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#prepare-to-use-a-boost-library-binary

questo installerà le librerie, che si utilizza in fase di esecuzione (si compila il tempo). Perché aggiungi questa cartella bin al tuo percorso ed è per questo che quando esegui una build dell'app con boost verrà eseguito e non dirà "impossibile trovare xxx.dll"