tutorial not example cmakelists cmake clion

not - cmake.. command



La carga grande del proyecto CMake es lenta en CLion (1)

El problema no es realmente con el CMakeLists.txt . CLion analiza todos los archivos fuente a los que se hace referencia en cmake para habilitar la mayoría de las funciones (navegación, finalización de código, refactorización). En mi experiencia, indexar proyectos grandes puede tomar hasta varios (decenas) de minutos.

Una forma de mitigar este problema es marcar los directorios de "terceros" de su proyecto como tales: haga clic con el botón derecho en su directorio common y Mark directory as... > Libraries . Incluso puede excluir directorios del proyecto si es necesario.

También tenga en cuenta que los resultados de la indexación CLion están almacenados en caché: después de la indexación inicial, solo los archivos modificados deben reparsed, incluso al reiniciar el proyecto (Tenga en cuenta que modificar las opciones de compilación en CMakeLists podría desencadenar un re-índice completo)

Estoy tratando de convertir varias aplicaciones grandes basadas en archivos a CMake para usar CLion en ellas.

Cada vez que abro el proyecto, sin embargo, CLion tarda aproximadamente un cuarto de hora en cargar el proyecto CMake, mientras que el indicador de memoria se mantiene por debajo de "750 de 1987MB". Admito que soy un novato de CMake, así que supongo que mis archivos CMakeLists.txt no son óptimos.

Básicamente, cada aplicación tiene un código fuente específico en un directorio propio y está utilizando un par de bibliotecas ''comunes''. Hice un proyecto estructuralmente equivalente para compartir en github:

https://github.com/pe-st/zalophus/tree/master/tree

En ese proyecto hay una aplicación ''a'' y dos librairies comunes ''atlas'' y ''greeting''. Cada biblioteca contiene una carpeta ''prueba'' con las pruebas de Googletest.

+ common | + atlas | | + test | + greeting | + test + a

En realidad, hay alrededor de una docena de bibliotecas a continuación comunes con aproximadamente 1500 archivos .cpp y .hpp en total, todos usan Boost y la biblioteca estándar, nada más.

La rama principal del proyecto en github contiene mi primer intento, donde se hace referencia a todos los directorios usando ''add_subdirectory''. El segundo intento (en la rama with_ext) es usar ExternalProject_Add para las bibliotecas dependientes. Cuando compilo / ejecuto las pruebas desde ''saludo'', también compila correctamente la dependencia ''atlas''. Sin embargo, también trata de compilar / ejecutar las pruebas de ''atlas'' (que falla ...) y no pude averiguar cómo compilar ''atlas'' sin las pruebas.

Entonces, ¿cómo debo diseñar mejor el proyecto CMake para que funcione con una base de código fuente como se muestra?

(Nota: también hice la misma pregunta en el foro Jetbrains CLion: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is- lento en CLion- )