2010-01-18 16 views
23

Come convertire i file vcproj esistenti in file di progetto che il componente aggiuntivo QT in Visual Studio riconosce e considera come progetti Qt validi?Come convertire un normale progetto win32 (VC++ vcproj) in un progetto Qt?

Devo solo mordere il proiettile e creare nuovi progetti per sostituire quelli vecchi e quindi aggiungere il codice esistente?

Sto utilizzando QT 4.6 e VS 2008 con Qt Add-in 1.1.2. I file vcproj originali hanno NON stato generato con QMake.

+0

Sto anche cercando la stessa soluzione. – sivabudh

+1

@Morten, ho appena inviato una richiesta di funzionalità a Nokia (ho il supporto standard). Pubblicherò aggiornamenti qui quando ho ricevuto risposte da loro. – sivabudh

+0

Eccellente ShaChris23. –

risposta

25

Utilizzando Visual Studio 2010+ è ora possibile convertire un progetto in un progetto Add-in Qt, utilizzando la funzione "Converti progetto in componente Qt" del componente aggiuntivo Qt.

I passaggi seguenti sono da work around in errore QTVSADDINBUG-27. Questo è stato testato con Visual Studio 2010, ma dovrebbe funzionare allo stesso modo con le nuove versioni:

  1. Fare clic destro sul progetto in "Solution Explorer", cliccare su "Progetto Scaricare"
  2. clic destro sul vostro progetto in "Soluzione Explorer ", fare clic su" Modifica .vcxproj "
  3. Aggiungere la riga <Keyword>Qt4VSv1.0</Keyword> tra i tag <PropertyGroup Label="Globals"> e </PropertyGroup>.
  4. clic destro sul progetto in "Solution Explorer", cliccare su "Progetto Reload"
  5. clic destro sul vostro progetto in "Solution Explorer", clicca su "Convertire progetto per Qt progetto Add-in"

Se nel progetto sono presenti file di intestazione, è necessario seguire le istruzioni in questo answer per attivare la generazione di file moc_ * nella cartella "File generati".

Per le edizioni di Visual Studio precedenti al 2010, vedere questo work around.

+1

Grazie per quello. Ho cercato ovunque, e questo è l'unico commento che dice come farlo davvero. Solo che dopo aver fatto quello che hai detto, ho dovuto rimuovere tutti i file cpp/h dal progetto e riaggiungerli. Dopo averlo fatto, ha creato la cartella dei file generati con i file moc. Grazie. – bmahf

+0

@bmahf felice di sapere che ha funzionato per te. Per quanto riguarda la generazione di file moc, hai provato la [risposta] (http://stackoverflow.com/a/6642863/262789) collegata nell'ultimo paragrafo della mia risposta. Contiene istruzioni sull'attivazione della generazione dei file moc_ *. – Benjamin

+0

Funziona anche per VS2013. – Bim

8

Ecco la risposta del tecnico di supporto Nokia, nome rimosso in seguito a tutela della privacy:

Ciao,

Grazie per il suggerimento. Ho inviato lo ai nostri sviluppatori che considereranno l'implementazione per una versione futura . È possibile tenere traccia utilizzando seguente link:

https://bugreports.qt.io/browse/QTVSADDINBUG-27

saluti, Support Engineer, Qt framework di sviluppo, Nokia >

domanda originale

Abbiamo un bel alcuni progetti vcproj legacy che desideriamo aggiungere a Qt. Attualmente, non abbiamo un modo semplice per convertire questi file legacy vcproj in un vcproj abilitato per Qt.

Cosa intendo per abilitazione Qt?

Su un vcproj non abilitato Qt, quando faccio clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni, tutte le opzioni relative a Qt sono tutte disattivate.

Sarebbe davvero utile se Nokia aggiungesse questa funzionalità al componente aggiuntivo VSTD.

StackOverflow compagni, se volete vedere questa caratteristica implementata da Nokia, per favore aiutatemi votare a favore al link qui sopra! =)

+2

Ora c'è una soluzione a questo, la soluzione alternativa è menzionata in un [commento] (https://bugreports.qt-project.org/browse/QTVSADDINBUG-27?focusedCommentId=165769&page=com.atlassian.jira.plugin.system. issuetabpanels: comment-tabpanel # comment-165769) nella segnalazione del bug o vedere la mia risposta qui sotto. – Benjamin

1

Altre risposte dal tecnico di supporto Qt; Penso che la prima pargraph è utile in quanto non sapevo che prima:

penso che questo è un equivoco davvero. Se si dispone di un progetto Qt generato con il componente aggiuntivo, allora è possibile modificare questo progetto in un progetto Qt generato da q2keke generato - e viceversa; Se si dispone di un .vcproj che è stato generato eseguendo qmake -tp vc, quindi è possibile convertirlo in un progetto Qt Add-in .

Non v'è alcuna funzionalità per la conversione di un progetto Win32 regolare in un progetto abilitato Qt , quindi il suggerimento creato è ancora valido, si veda:

https://bugreports.qt.io/browse/QTVSADDINBUG-27 

posso vedere dalla storia di questa relazione che è stato chiuso e riapre nuovamente , quindi presumo che ci sia stato un malinteso su quello che stai cercando in primo luogo.

Se si crea un .pro per voi progetto utilizzando qmake, allora si dovrebbe essere in grado di creare un file utilizzando .vcproj 'qmake -tp vc' su quel file .pro. Il manuale qmake è disponibile qui:

http://doc.qt.io/qt-5/qmake-manual.html 

Spero che questo aiuti.

saluti,

-

Support Engineer, Qt sviluppo Frameworks, Nokia

1

conversione di un progetto regolare VC ad un progetto di QT dovrebbe essere più facile e il messaggio di errore visualizzato dal Il plug-in Qt quando si tenta di aggiungere una classe Qt a un progetto non-QT è estremamente inutile, specialmente se si considerano le differenze effettive tra un Qt .vcprojfile e uno non-Qt. Spesso si ha il codice legacy esistente incorporato nelle librerie e Dll. Durante la migrazione a Qt potresti voler aggiungere una classe Qt a un modulo esistente che in precedenza era un progetto non Qt. Se il modulo ha relativamente pochi file sorgente, potresti trovare più facile ricreare il progetto come progetto Qt. Se ha centinaia di file sorgente o è complesso in altri modi, spesso è più semplice modificare a mano il file .vcproj. Confrontando un .vcproj regolare con un Qt uno è facile capire quali siano le differenze:

  1. Un progetto Qt ha una Chiave = "Qt4VS1.0" linea immediatamente prima TargetFrameWorkVersion vicino alla parte superiore del file.
  2. Nella parte inferiore del file è necessario aggiungere i Globals richieste (in particolare QtVersion.Win32)
  3. Sarà necessario aggiungere le posizioni dei file di intestazione Qt alla percorsi di inclusione (per tutti costruire configurazioni) . È possibile farlo in seguito tramite l'interfaccia utente di Visual Studio
  4. Per un file exe o dll sarà inoltre necessario aggiungere le posizioni delle librerie Qt e i file di libreria alle opzioni del linker.

In realtà è sufficiente eseguire 1 e 2 in un editor di testo e quindi è possibile ricaricare il progetto in Visual Studio.

Dopo aver impostato i percorsi e le librerie includi dovresti essere in grado di creare il progetto come al solito. Successivamente puoi aggiungere una nuova classe Qt o convertire una classe esistente in una classe Qt. Per fare in modo che quest'ultimo rimuova prima i file di origine per la classe esistente dal progetto, altrimenti è probabile che la procedura guidata di aggiunta classe Qt si lamenti.

I passaggi precedenti sono destinati agli utenti esperti e si consiglia di eseguire sempre il backup dei file .vcproj dei progetti esistenti prima di modificare manualmente. Qui semplici errori possono rendere il file inutilizzabile.

1

Io uso Qt VS Tools anziché il componente aggiuntivo Qt VS.

Istruzioni

Nel file .vcxproj, apportare le seguenti modifiche:

Aggiungi <Keyword>Qt4VSv1.0</Keyword> in <Project><PropertyGroup Label="Globals"> (in accordo con Benjamin's answer).

Aggiungere il seguente elemento nella <Project> (l'elemento radice):

<ProjectExtensions> 
    <VisualStudio> 
     <UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_x64="5.6-msvc2013_64" MocOptions="" /> 
    </VisualStudio> 
    </ProjectExtensions> 

Si noti che il valore dell'attributo Qt5Version_x0020_x64 dovrebbe corrispondere al nome di una versione Qt in Qt VS Tools. È possibile impostare un valore arbitrario e quindi correggerlo nelle impostazioni di Qt Project in Visual Studio.

La mia configurazione

  • Visual Studio 2013
  • Qt VS Tools 2.0.0 Beta (a quanto pare un rebranding di Qt VS Add-in)
  • Qt 5.6 msvc2013_64

Note

Quando seguo Benjamin's answer e provo a "Converti progetto in progetto Qt VS Tools", Visu al Studio si blocca.

L'unica funzionalità specifica per Qt che ho provato con il progetto è l'esportazione di.file pri.

Ho invertire le modifiche necessarie da un nuovo progetto VS creato utilizzando il modello Qt GUI Application.

+0

Grazie mille. È matto che il plugin non lo faccia per te. – CaptRespect

Problemi correlati