Articles

En cmake, ¿qué es un «proyecto»?

Un proyecto agrupa lógicamente una serie de destinos (es decir, bibliotecas, ejecutables y pasos de compilación personalizados) en una colección autónoma que se puede compilar por sí sola.

En la práctica, eso significa que si tiene un comando project en un CMakeLists.txt, debería poder ejecutar CMake desde ese archivo y el generador debería producir algo que se pueda construir. En la mayoría de los códigos base, solo tendrá un solo proyecto por compilación.

Tenga en cuenta, sin embargo, que puede anidar varios proyectos. Un proyecto de nivel superior puede incluir un subdirectorio que a su vez es otro proyecto autónomo. En este caso, el comando project introduce un alcance adicional para ciertos valores. Por ejemplo, la variable PROJECT_BINARY_DIR siempre apuntará al directorio binario raíz del proyecto actual. Compare esto con CMAKE_BINARY_DIR, que siempre apunta al directorio binario del proyecto de nivel superior. También tenga en cuenta que ciertos generadores pueden generar archivos adicionales para proyectos. Por ejemplo, los generadores de Visual Studio crearán un archivo de solución .sln para cada subproyecto.

Use subproyectos si su base de código es muy compleja y necesita que los usuarios puedan construir ciertos componentes de forma aislada. Esto le da un mecanismo muy poderoso para estructurar el sistema de construcción. Debido al aumento de los gastos generales de codificación y mantenimiento necesarios para hacer que los varios subproyectos sean verdaderamente autónomos, le aconsejaría que solo siga por ese camino si tiene un caso de uso real para ello. Dividir la base de código en diferentes objetivos siempre debe ser el mecanismo preferido para estructurar la compilación, mientras que los subproyectos deben reservarse para aquellos casos raros en los que realmente necesita hacer un subconjunto de objetivos autocontenidos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.