Я пытаюсь преобразовать несколько больших приложений на основе make-файлов в CMake, чтобы использовать CLion на них.Большая загрузка проекта CMake медленна в CLION
Каждый раз, когда я открываю проект, CLION занимает около четверти часа, чтобы загрузить проект CMake, в то время как индикатор памяти остается ниже «750 из 1987 МБ». Я признаю, что я новичок в CMake, поэтому я думаю, что мои файлы CMakeLists.txt не оптимальны.
В основном каждое приложение имеет определенный исходный код в собственной папке и использует пару «общих» библиотек. Я сделал структурно эквивалентный проект для обмена на GitHub:
https://github.com/pe-st/zalophus/tree/master/tree
В этом проекте есть приложение «а» и «Атлас» два общих librairies и «приветствие». Каждая библиотека содержит тестовую папку с тестами Googletest.
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
В действительности существует около десятка библиотек ниже общих с около 1500 .cpp и .hpp файлов в общем, все из них с помощью подталкивание и стандартную библиотеку, ничего другого.
Основная ветвь проекта на github содержит мою первую попытку, на которую ссылаются все каталоги с помощью 'add_subdirectory'. Вторая попытка (в ветке with_ext) использует ExternalProject_Add для зависимых библиотек. Когда я компилирую/запускает тесты из «приветствия», он правильно компилирует также атлас зависимости. Однако он также пытается скомпилировать/запустить тесты «атласа» (который терпит неудачу ...), и я не мог понять, как просто компилировать «атлас» без тестов.
Итак, как мне лучше проектировать проект CMake для работы с базой исходного кода, как показано на рисунке?
(Примечание: я задал тот же вопрос также в форуме JetBrains CLion: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is-slow-in-CLion-)
Я так и не понял, но вы правы. Если я дважды загружаю проект подряд, второй раз быстрее (первый раз: генерация CMake 935s, создание символов 270s, второй раз: генерация PSake 49, создание символов 177s). Было бы неплохо, если бы во второй раз можно было бы загружать символ второй раз ... Но остается одна проблема: поскольку исходный код библиотеки часто меняется ежедневно, кеширование не помогает. Я все еще буду смотреть в каталоги маркировки как библиотеки ... – pesche