En mi desarrollo (principalmente C ++), me he adherido al uso de compilaciones fuera de la fuente. Es decir, mi fuente por lo general se encuentra en un /project/src
directorio y la acumula en vivo en una /project/build/bin/release
, /project/build/bin/debug
directorios. He hecho esto porque mantiene mis directorios de origen limpios de archivos intermedios, tengo una ubicación para todos mis archivos binarios, el empaquetado es más fácil, la limpieza es más fácil y el control de versiones es más fácil. (¿Yo me perdí algo?)
Estoy heredando un proyecto (grande) ahora que usa compilaciones en la fuente. ¿Cuál es la motivación para este tipo de estructura y cuáles son sus ventajas? (Me preocupan más las razones de nivel de ingeniería frente a los tipos de razones de preferencia personal).
Esperaba que el "Diseño de software C ++ a gran escala" de Lakos lo hubiera influido, pero lo extrañaría si lo hiciera.
/project/src/bin/release
, o realmente todos los archivos intermedios y de salida/project/src
? Este último puede ser realmente un desastre si hay más de una docena de archivos fuente, el primero está bien.main.cpp
inicialmente estando en el nivel superior de su proyecto, todavía crea un directorio de compilación de cmake separado de su fuente en ese nivel superior. Creo que MSVS es similar a Clion en este aspecto también.Respuestas:
Después de preguntarle a la comunidad aquí y continuar mi búsqueda en línea, no he podido encontrar una justificación de ingeniería significativa para usar compilaciones en la fuente. (Hay muchos ejemplos de razones para evitarlos).
La única razón objetiva que he encontrado (como se mencionó en el comentario de @BartvanIngenSchenau) es que las compilaciones en la fuente a veces son predeterminadas por un sistema de compilación. Debido a este valor predeterminado, no requieren sobrecarga en el tiempo de configuración, lo que puede ser perfectamente aceptable para un proyecto muy pequeño (o desde cero).
fuente