Pregunta

Entonces, he estado haciendo Java durante varios años, pero ahora estoy comenzando un proyecto en C ++. Estoy tratando de determinar las mejores prácticas para configurar dicho proyecto.

Dentro del proyecto, ¿cómo estructura generalmente su código? ¿Lo haces al estilo Java con carpetas de espacio de nombres y rompes tu fuente de esa manera? ¿Mantiene sus encabezados públicos en un directorio de inclusión para facilitar las referencias?

He visto ambas y otras formas mencionadas, pero ¿cuál es un buen método para un proyecto grande?

Además, ¿cómo maneja los recursos / carpetas en la estructura de su aplicación? Está muy bien que el proyecto final se instale con una carpeta log para almacenar registros, tal vez una carpeta lib para archivos de biblioteca, tal vez un data carpeta de datos, pero ¿cómo gestionas esos bits dentro del proyecto? ¿Hay alguna manera de definir eso para que cuando construya la solución construya la estructura por usted? ¿O simplemente tiene que ir a las carpetas de configuración integradas (depuración, lanzamiento, etc.) y construir la estructura de archivos manualmente, asegurando así que las rutas que espera encontrar su archivo EXE estén posicionadas correctamente?

¿Fue útil?

Solución

Tendemos a hacer de cada componente una solución, que contenga uno o más proyectos (o subcomponentes) y un proyecto de prueba. El proyecto de prueba contiene todas las pruebas unitarias.

Luego organizamos las soluciones en un árbol basado en módulos y componentes, por ejemplo:

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution

La solución contendrá varios proyectos de Visual Studio:

//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/Something
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/SomethingElse
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/TestTheSolution

Puede haber más profundidad en el árbol, o menos, dependiendo de la cantidad de componentes / subcomponentes que haya. También tendemos a tener un "General" solución a nivel de subsistema y subcomponente con material reutilizable general.

Luego tenemos una solución de nivel de subsistema que une todo para construir el subsistema.

No utilizamos ni exportamos a " include " directorio. Dejamos que Visual Studio se cree y enlace dentro de nuestros sandboxes. Tenemos un '' Lanzamiento '' separado sandbox para garantizar que no vinculamos accidentalmente la biblioteca incorrecta.

Otros consejos

Tengo una pregunta relacionada pero diferente sobre aquí también. Declaro nmake, pero realmente es cualquier sistema de compilación: Scons, Bakefile, nmake, Ant, vcproj

La forma en que generalmente estructuro mi código es por "módulo". dentro de una aplicación o DLL. No solía usar espacios de nombres, pero eso no significa que no debas hacerlo.

Dentro del IDE tengo algo como esto:

/solution
   /prj1
      /headers
        /module1
        /module2
      /resource
      /source
        /module 1
        /module 2
      /test
   /prj2
      /headers
        /module1
        /module2
      /resource
      /source
        /module 1
        /module 2
      /test

En el sistema de archivos tengo algo como esto:

/solution
    /prj1
       /bin
       /build
       /include
          /module1
          /module2
       /lib
       /res
       /src
          /module1
          /module2
       /test
    /prj2
       /bin
       /build
       /include
          /module1
          /module2
       /lib
       /res
       /src
          /module1
          /module2
       /test
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top