2010-01-18 10 views
23

¿Cómo puedo convertir archivos vcproj existentes a archivos de proyecto que el complemento QT a Visual Studio reconoce y trata como proyectos válidos de Qt?Cómo convertir un proyecto win32 (VC++ vcproj) regular a un proyecto Qt?

¿Debo dar un paso al frente y crear nuevos proyectos para reemplazar los antiguos y luego agregar el código existente?

Estoy usando QT 4.6 y VS 2008 con Qt Add-in 1.1.2. Los archivos originales vcproj tienen NO generados con QMake.

+0

También estoy buscando la misma solución. – sivabudh

+1

@Morten, acabo de enviar una solicitud de funciones a Nokia (tengo soporte estándar). Publicaré actualizaciones aquí cuando obtenga respuestas de ellos. – sivabudh

+0

Excelente ShaChris23. –

Respuesta

25

Al usar Visual Studio 2010+, ahora es posible convertir un proyecto en un proyecto de Qt Addin, utilizando la función "Convertir proyecto a Qt Add-in project" de Qt Addin.

Los siguientes pasos son del work around en el error QTVSADDINBUG-27. Esto fue probado con Visual Studio 2010, pero debería funcionar de manera similar con las nuevas versiones:

  1. Haga clic derecho sobre su proyecto en "Explorador de soluciones", haga clic en "Descargar proyecto"
  2. clic derecho en su proyecto en "Solución Explorer ", haga clic en" Editar .vcxproj "
  3. Agregue la línea <Keyword>Qt4VSv1.0</Keyword> entre las etiquetas <PropertyGroup Label="Globals"> y </PropertyGroup>.
  4. Haga clic derecho sobre su proyecto en "Explorador de soluciones", haga clic en "Proyecto Reload"
  5. clic derecho en su proyecto en "Explorador de soluciones", haga clic en "Convertir el proyecto de Qt proyecto de complemento de"

Si tiene archivos de encabezado en su proyecto, tendrá que seguir las instrucciones en este answer para activar la generación de archivos moc_ * en la carpeta "Archivos generados".

Para las ediciones de Visual Studio anteriores a 2010, vea este work around.

+1

Gracias por eso. Miré a todas partes, y este es el único comentario que dice cómo realmente hacerlo. Excepto que después de que hice lo que dijiste, tuve que eliminar todos los archivos cpp/h del proyecto y volver a agregarlos. Después de hacer eso, creó la carpeta Generated Files con archivos moc. Gracias. – bmahf

+0

@bmahf contento de saber que funcionó para usted. En cuanto a la generación de archivos moc, probó la [respuesta] (http://stackoverflow.com/a/6642863/262789) vinculada en el último párrafo de mi respuesta. Contiene instrucciones para activar la generación de los archivos moc_ *. – Benjamin

+0

Funciona también para VS2013. – Bim

8

Aquí está la respuesta de Nokia ingeniero de soporte, nombre eliminado protección de la privacidad:

Hola,

Gracias por la sugerencia. Tengo se lo pasé a nuestros desarrolladores que considerarán implementarlo para una futura versión . Usted puede seguirlo usando el siguiente enlace:

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

Saludos, ingeniero de soporte, marcos de desarrollo Qt, Nokia >

pregunta original

Tenemos un buen pocos proyectos vcproj heredados que deseamos agregarle Qt. Actualmente, no tenemos una forma sencilla de convertir estos archivos heredados de vcproj en un vcproj habilitado para Qt.

¿Qué quiero decir con Qt-enabled?

En un vcproj no habilitado para Qt, cuando hago clic con el botón derecho en el nombre del proyecto en el Explorador de soluciones, todas las opciones relacionadas con Qt están atenuadas.

Sería muy útil si Nokia agrega esta capacidad al complemento VSTD.

compañeros Stackoverflow, si le gustaría ver esta característica implementada por Nokia, ayudan a votar por ella en el enlace de arriba! =)

+2

Hay una solución para esto ahora, la referencia a la solución en un [comentario] (https://bugreports.qt-project.org/browse/QTVSADDINBUG-27?focusedCommentId=165769&page=com.atlassian.jira.plugin.system. issuetabpanels: comment-tabpanel # comment-165769) en el informe de errores o vea mi respuesta a continuación. – Benjamin

1

Más respuestas de Qt support engineer; Creo que el primer párrafo es útil, ya que no sabía eso antes:

Creo que esto es un malentendido realmente. Si tiene un proyecto Qt generado con el complemento, entonces puede cambiar este proyecto en un proyecto Qt generado qmake - y viceversa; Si tiene un .vcproj que ha sido generado haciendo qmake -tp vc, entonces puede convertir esto a un proyecto de Qt Add-in .

No hay ninguna funcionalidad de convertir un proyecto Win32 regulares en un proyecto permitido Qt , por lo que la sugerencia creado sigue siendo válida, ver:

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

que puede ver en la historia de este informe que ha sido cerrado y volvió a abrir de nuevo, así que supongo que hubo un malentendido con respecto a lo que estaba buscando en primer lugar.

Si crea un .pro para su proyecto utilizando qmake, entonces usted debería ser capaz para crear un archivo usando .vcproj 'QMake vc -tp' en ese archivo .pro. El manual de qmake está disponible aquí:

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

Espero que esto ayude.

Saludos,

-

ingeniero de soporte, desarrollo Qt Marcos, Nokia

1

Conversión de un proyecto normal VC a un proyecto de QT debería ser más fácil y el mensaje de error mostrado por el El complemento Qt cuando se intenta agregar una clase Qt a un proyecto que no es QT es extremadamente inútil, especialmente cuando se consideran mínimas las diferencias reales entre un Qt .vcprojfile y uno que no sea Qt. A menudo ocurre que tiene un código de legado existente incorporado en las bibliotecas y Dll. Durante la migración a Qt, es posible que desee agregar una clase Qt a un módulo existente que anteriormente era un proyecto no Qt. Si el módulo tiene relativamente pocos archivos fuente, puede que le resulte más fácil volver a crear el proyecto como un proyecto Qt. Si tiene cientos de archivos fuente o es complejo de otras maneras, a menudo es más fácil simplemente editar manualmente el archivo .vcproj. Mediante la comparación de un .vcproj regular con un Qt uno que es fácil de ver lo que las diferencias son:

  1. proyecto A Qt tiene una palabra clave = "Qt4VS1.0" línea inmediatamente antes TargetFrameWorkVersion cerca de la parte superior del archivo.
  2. En la parte inferior del archivo es necesario agregar los Globals necesarios (en particular, QtVersion.Win32)
  3. Usted tendrá que añadir las ubicaciones de los archivos de cabecera de Qt a la incluyen rutas de acceso (para todos construir configuraciones) . Puede hacerlo más tarde a través de la interfaz de usuario de Visual Studio
  4. Para un exe o dll también necesitará agregar las ubicaciones de la biblioteca Qt y los archivos de la biblioteca a las opciones del enlazador.

En realidad, solo necesita hacer 1 y 2 en un editor de texto y luego puede volver a cargar el proyecto en Visual Studio.

Después de configurar las rutas de acceso y las bibliotecas, debe poder construir el proyecto como siempre. Luego puede agregar una nueva clase Qt o convertir una clase existente en una clase Qt. Para hacer esto último, primero elimine los archivos fuente de la clase existente del proyecto, de lo contrario, es probable que el asistente de clase de Qt add se queje.

Los pasos anteriores están destinados a usuarios experimentados y siempre debe hacer una copia de seguridad de los proyectos existentes .vcproj antes de editar archivos. Errores simples aquí pueden hacer que el archivo no se pueda usar.

1

Uso Qt VS Tools en lugar de Qt VS Add-in.

Instrucciones

En el archivo .vcxproj, hacen las siguientes modificaciones:

Añadir <Keyword>Qt4VSv1.0</Keyword> en <Project><PropertyGroup Label="Globals"> (de acuerdo con Benjamin's answer).

Agregue el elemento siguiente en <Project> (el elemento raíz):

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

Tenga en cuenta que el valor del atributo Qt5Version_x0020_x64 debe coincidir con el nombre de una versión de Qt en Qt VS Herramientas. Puede establecer un valor arbitrario y luego arreglarlo en Qt Project Settings en Visual Studio.

Mi configuración

  • Visual Studio 2013
  • Qt VS Tools 2.0.0 Beta (al parecer un cambio de marca de Qt VS Add-in)
  • Qt 5.6 msvc2013_64

Notas

Cuando sigo Benjamin's answer y trato de "Convertir proyecto en proyecto de Qt VS Tools", Visu Al Studio se atasca.

La única funcionalidad específica de Qt que he probado con el proyecto es exportar a.archivo pri

He modificado por ingeniería inversa las modificaciones necesarias de un nuevo proyecto de VS creado con la plantilla Qt GUI Application.

+0

Muchas gracias. Es una tontería que el complemento no haga esto por ti. – CaptRespect

Cuestiones relacionadas