2011-03-22 15 views
7

Me gustaría utilizar un diseño estándar para mi proyecto linux C++ que se crea utilizando cmake y contiene algunos ejecutables y una biblioteca a la que estos ejecutivos pueden vincular. Actualmente solo tenía una carpeta para el proyecto y una subcarpeta para cada subproyecto. Con un CMakeLists en el nivel superior y uno en cada subnivel que agrega el nivel opt.Diseño de directorio de proyectos Linux C++ - CMake

Project- 
      executable1 
      executable2 
      library 

Sin embargo creo que sería mejor configuración como la siguiente

Project - 
    lib //Library output folder 
    bin //Executable output folder 
    src //Al cpp source files 
    include //All header files 
    test //All tests 

que tendría sólo una CMakeLists en el nivel superior. Puedo configurar esto fácilmente en cmake. ¿Alguien tiene razones para elegir un diseño diferente?

Respuesta

7

No voy a poner la lib, bin y salida de prueba directamente en el directorio del proyecto: si desea hacer una depuración y una versión de lanzamiento, se queda atascado, porque sólo tiene un marcador de posición. Fuera de la construcción de la fuente es tu amigo! Me gustaría utilizar algo como:

Project 
    src 
    include 
    CMakeLists.txt 

Estos serán generados cuando se utiliza cmake:

Project_build_dbg 
    bin 
    lib 
    test 

Project_build_release 
    bin 
    lib 
    test 
+1

+1 para construcciones fuera de la fuente. No satura su directorio de origen, no requiere que edite los archivos de ignorar de su VCS, le permite comprimir su directorio de origen sin obtener un zip xxx mb porque contiene archivos de objeto, etc. etc. – stijn

+0

Una gran idea, necesita trabajar cómo tener dos tipos de construcción diferentes ahora. – Mark

1

El diseño que propone utilizar es más o menos la forma en que se organizan la mayoría de los proyectos. Y es una forma muy bien organizada de tener un proyecto. Por lo general, también tengo una carpeta docs en la que se incluye toda la documentación sobre el proyecto. Así que aquí está mi configuración de proyecto habitual.

Project - 
    lib //Library output folder 
    bin //Executable output folder 
    src //All cpp source files 
    include //All header files 
    test //All tests 
    docs //All project documentation ------> new addition 
+0

1 docs, se me olvidaba, gracias. También significará que caen bajo control de versión con mi configuración de git. Sin embargo, como anteriormente, moveré lib/bin/test fuera del origen del proyecto. – Mark

Cuestiones relacionadas