2011-01-31 28 views
16

Estoy tratando de importar una fuente de la aplicación C++ existente en Visual Studio para aprovechar algunas herramientas específicas de MS. Sin embargo, después de buscar en línea y jugar con Visual Studio, parece que no puedo encontrar una manera fácil de importar el código fuente existente de C++ en Visual Studio y mantenerlo estructuralmente intacto.Importación del código fuente existente de C++ en Visual Studio

La capacidad de importación que encontré aplana los directorios y los coloca todos en un solo proyecto. ¿Me estoy perdiendo de algo?

(Todo esto es administrado C++, y contiene específica construye para Win/Unix)

Respuesta

6

No conozco ninguna solución general bajo las limitaciones dadas: específicamente tener que crear muchos proyectos desde un árbol fuente.

La mejor opción que veo es en realidad la creación de los archivos del proyecto por algún script.

  • Creación de un solo proyecto manualmente (crear proyecto vacío, a continuación, añadir los archivos),
  • Configurar que lo más cerca posible a su gusto (es decir, con los encabezados precompilados, crear configuraciones, etc.)
  • uso del .vcproj creado como esqueleto para crear los archivos del proyecto

Un método muy simple sería la lista de archivos, el nombre del proyecto, etc. con "tokens extraños", y rellenarlos con su generador. Si quieres ser el chico bueno, puedes usar una biblioteca de manejo de XML.


Nuestra experiencia: En realidad no almacenamos la .vcproj y .sln en el repositorio (GIT) más, pero un script en Python que re-genrates ellos desde el árbol de código fuente, junto con VS 2008 "plantillas de hojas de propiedades" (o como se llamen). Esto ayuda mucho a hacer ajustes generales.

script de generación de

El proyecto contiene información sobre todos los proyectos de especialidades (por ejemplo, qué utilizan MFC/ATL, va a crear DLL o un EXE, archivos para excluir).

Además, este script también contiene dependencias, que alimenta el script de compilación real.

Esto funciona bastante bien, los problemas son menores: se necesita Python en los sistemas de compilación, sin olvidar volver a generar los archivos del proyecto, tengo que aprender algo de Python para hacer ajustes en algunos proyectos.


@ Michael Burr "¿Qué tan complejo son los scripts de Python y lo apoyan 'plantillas' que pueda necesitar?"

Honestamente, no puedo decirlo, ya que le di la tarea a otro desarrollador (que eligió Python). La tarea original era proporcionar un script de compilación, ya que la compilación de la solución VS2008 no era lo suficientemente buena para nuestras necesidades, y el archivo de proceso por lotes anterior no era compatible con la paralelización. .vcproj generación se agregó más tarde. Según tengo entendido, su script genera los archivos .vcproj y .sln desde cero, pero extrae todas las configuraciones de las hojas de propiedades separadas.

Pros:

  • Adición de nuevas configuraciones sobre la marcha. Algunos de los proyectos ya tenían seis configuraciones, y la planificación del soporte Unicode significaba considerar doblarlos por un tiempo. Algunas herramientas incómodas todavía se construyen como MBCS, por lo que algunas bibliotecas tienen ahora 8 configuraciones. Configurar eso de la mano es un dolor, ahora ya no me molesta más.

  • Cambios globales, p. moviéndonos por las rutas relativas del proyecto, la carpeta de archivos temporales y los binarios finales hasta que encontramos una solución con la que estamos contentos con

  • Build Stability. La fusión de los archivos del proyecto VC6 fue una fuente notable de errores por varias razones, y los archivos del proyecto VC9 no se veían mejor. Ahora las cosas parecen estar mejor aisladas: configuración de compilación/enlace en las hojas de propiedades, manejo de archivos en el script. Además, la secuencia de comandos en su mayoría listas variaciones de nuestro predeterminado, terminando más fácil de leer que un archivo de proyecto.

general: no veo un gran beneficio cuando sus proyectos ya están configurados, son bastante estables, y que no tienen problemas reales. Sin embargo, al pasar al desconocido (para nosotros: principalmente compilaciones VC6 -> VC9 y Unicode), la flexibilidad redujo el riesgo de los experimentos en gran medida.

+0

Esto me parece bastante interesante. ¿Qué tan complejas son las secuencias de comandos de Python y las "plantillas" de soporte que pueda necesitar? –

2

Crear una nueva solución vacío y añadir su código fuente a la misma.

Por ejemplo,

Archivo> Nuevo> Proyecto ... Visual C++> Win32> Aplicación de consola Win32 Configuración de la aplicación> - Desactive la opción "encabezado precompilado" - Check "Proyecto vacío"

El proyecto luego se crea. Para añadir el código existente:

Proyecto> Agregar elemento existente ...> - Seleccionar archivo (s) para añadir

recompilación, hecho!

+0

John: Hay cientos de archivos cpp existentes, ese es el enfoque que ya he probado. Cada carpeta necesita ser tratada como una lib/dll separada (y hay más de 30 carpetas) – pinvoke

+1

@pinvoke: para parafrasear una banda de sucky 80, "portar es difícil de hacer". –

1

En el "Explorador de soluciones" puede hacer clic en el botón "Mostrar todos los archivos" para tener Visual Studio visualizar los archivos tal como existen en el sistema de archivos (directorios y todo).

En mi opinión, esta es una solución imperfecta, pero creo que es la mejor disponible. No conozco un plugin, macro u otra herramienta que importe un directorio en un proyecto real con carpetas que reflejen el sistema de archivos.

1

Sé que esta pregunta ya está marcada como correcta, pero pude importar el código existente en un proyecto con Visual Studio 2008 haciendo "Archivo" -> "Nuevo proyecto desde el código existente". La estructura de directorio de mi código fue retenida.

+1

"La estructura de directorio de mi código se retuvo". Lo intenté, todos mis archivos fueron listados de manera "plana" bajo el filtro "Archivos de origen". – wil

+1

Después de intentar por un tiempo, estaba a punto de abandonar la idea de importar el árbol fuente automáticamente. Encontré lo mismo, los archivos eran planos debajo de los "Archivos fuente" pero luego presionas el botón "Mostrar todos los archivos" y cambian a la misma estructura de árbol que en el sistema de archivos, si presionas ese botón nuevamente vuelven a estructura plana. – martinako

12

Con ningún proyecto/solución de carga, en Visual Studio 2005 que veo este elemento de menú:

Archivo> Nuevo Proyecto De Código existente ...

Después de seguir el asistente, mi problema está resuelto!

Al cambiar el botón "Mostrar todos los archivos" se muestra la jerarquía completa con todos los directorios y archivos.

Si la opción Nuevo proyecto de código existente ... no está disponible, deberá agregarla en Herramientas> Personalizar ...

Tools > Customize... Commands tab, File menu, Add Command button, File menu, New Project From Existing Code...

+0

Esto no funciona. Visual Studio simplemente descarga todos los archivos .h en la carpeta "Archivos de encabezado" y todos los archivos .cpp en la carpeta "Archivos de origen". No conserva la jerarquía de carpetas en absoluto. – android927

1

Siempre se puede cambiar la vista del menú de proyecto

Por ejemplo. Proyecto-> Mostrar todos los archivos

Lo anterior mostrará los archivos en orden sistema de archivos en bruto unformated

No está seguro de las versiones anteriores, pero funciona en VS 2010

0

le entiendo, tengo el mismo problema : muchos archivos .cpp y .h organizados en muchas carpetas y subcarpetas con rutas de acceso escritas para esta estructura de carpetas. La única manera que puede hacer para importar esta estructura de carpetas junto con los archivos fuente es usar "Mostrar todos los archivos" y luego hacer clic derecho en las carpetas y seleccionar "Importar en proyecto". Esto funciona para mí cuando estoy usando proyectos C-Sharp. Pero no funciona para mis proyectos C++. Todavía estoy buscando una solución ...

Cuestiones relacionadas