여러 메이크 파일 기반 응용 프로그램을 CMake로 변환하여 CLion을 사용하려고합니다.대형 CMake 프로젝트로드가 CLION에서 느립니다.
그러나 프로젝트를 열 때마다 CLion은 CMake 프로젝트를로드하는 데 약 1/4 시간이 걸리지 만 메모리 표시기는 "750/1987MB"이하로 유지됩니다. 나는 내가 CMake 초보자라는 것을 인정한다. 그래서 나는 CMakeLists.txt 파일이 최적이 아니라고 생각한다.
기본적으로 모든 응용 프로그램은 고유 한 디렉토리에 특정 소스 코드가 있으며 '공통'라이브러리 몇 개를 사용합니다. 나는 GitHub의에 공유하기위한 구조적으로 상응하는 프로젝트를 만들었습니다 : 그 프로젝트에서
https://github.com/pe-st/zalophus/tree/master/tree
응용 프로그램 'A'와 두 가지 일반적인 librairies '아틀라스'와 '인사'가있다. 모든 도서관에는 Googletest 테스트와 함께 'test'폴더가 있습니다.
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
현실에서 그들 모두 부스트 표준 라이브러리, 아무것도를 사용하여, 총 약 1500 cpp를하고 .HPP 파일 일반 아래 다스 라이브러리에 대해이 있습니다.
github에있는 프로젝트의 마스터 브랜치에는 'add_subdirectory'를 사용하여 모든 디렉토리를 참조하는 첫 번째 시도가 포함되어 있습니다. 두 번째 시도 (with_ext 분기에서)는 종속 라이브러리에 대해 ExternalProject_Add를 사용합니다. 내가 'greeting'에서 테스트를 컴파일/실행할 때 종속성 'atlas'도 올바르게 컴파일됩니다. 그러나 그것은 또한 'atlas'의 테스트를 컴파일/실행하려고하는데 (실패합니다 ...) 테스트없이 'atlas'를 컴파일하는 법을 배울 수 없습니다.
그래서 어떻게 소스 코드 기반으로 작업하도록 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, 두 번째 시간 : CMake 생성 49s, 빌딩 심볼 177s). 두 번째로 로딩되는 심볼이 더 많은 캐싱을 가질 수 있다면 좋을 것입니다. 그러나 한 가지 문제가 남아 있습니다 : 라이브러리의 소스 코드가 자주 변경되기 때문에 캐싱이 많은 도움이되지 않습니다. 나는 여전히 디렉토리를 라이브러리로 표시 할 것이다. – pesche