Sto provando a convertire diverse grandi applicazioni basate su makefile in CMake per utilizzare CLion su di esse.Il grande carico di lavoro di CMake Project è lento in CLion
Ogni volta che apro il progetto, tuttavia, CLion impiega circa un quarto d'ora per caricare il progetto CMake, mentre l'indicatore di memoria rimane sotto "750 di 1987MB". Ammetto di essere un principiante di CMake, quindi suppongo che i miei file CMakeLists.txt non siano ottimali.
Fondamentalmente ogni applicazione ha un codice sorgente specifico in una directory a sé stante e utilizza un paio di librerie "comuni". Ho fatto un progetto strutturalmente equivalente per la condivisione su GitHub:
https://github.com/pe-st/zalophus/tree/master/tree
In quel progetto c'è una domanda 'a' e 'atlante' due librairies comuni e 'saluto'. Ogni libreria contiene una cartella 'test' con test Googletest.
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
in realtà ci sono circa una dozzina di librerie sotto comune con circa 1500 file cpp e .hpp in totale, tutti loro con Boost e la libreria standard, nient'altro.
Il ramo master del progetto su github contiene il mio primo tentativo, in cui tutte le directory sono referenziate usando 'add_subdirectory'. Il secondo tentativo (nel ramo with_ext) utilizza ExternalProject_Add per le librerie dipendenti. Quando compilo/eseguo i test da 'greeting', compila correttamente anche l''atlante' delle dipendenze. Comunque cerca anche di compilare/eseguire i test di 'atlas' (che fallisce ...) e non ho potuto capire come compilare semplicemente 'atlas' senza i test.
Quindi, come dovrei progettare meglio il progetto CMake affinché funzioni con una base di codice sorgente come mostrato?
(Nota: ho chiesto la stessa domanda anche nel forum JetBrains Clion: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is-slow-in-CLion-)
Non l'ho mai capito, ma hai ragione. Se carico il progetto due volte di seguito, la seconda volta è più veloce (prima volta: generazione 935 di CMake, creazione di simboli 270, seconda volta: generazione di CMake 49s, creazione di simboli 177s). Sarebbe bello se il caricamento del simbolo la seconda volta potesse avere anche più cache ... Ma rimane un problema: dato che il codice sorgente delle librerie cambia spesso ogni giorno, la memorizzazione nella cache non aiuta molto. Cercherò comunque di marcare le directory come librerie ... – pesche