2016-06-03 5 views
7

여러 메이크 파일 기반 응용 프로그램을 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-를)

답변

4

문제 CMakeLists.txt와 정말 아니다. CLion은 cmake에서 참조하는 모든 소스 파일을 구문 분석하여 대부분의 기능 (탐색, 코드 완성, 리팩토링)을 활성화합니다. 내 경험에 비추어 볼 때 대규모 프로젝트를 인덱싱하는 데 몇 분 (수십분)이 걸릴 수 있습니다.

이 문제를 완화하는 방법은 프로젝트의 "제 3 자"디렉토리를 다음과 같이 표시하는 것입니다. common 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 Mark directory as... > Libraries을 마우스 오른쪽 버튼으로 클릭합니다. 필요한 경우 프로젝트에서 디렉토리를 제외 할 수도 있습니다.

또한 CLion 색인의 결과가 캐시됩니다 참고 : 프로젝트를 다시 시작하는 경우에도 초기 색인 후에 만 ​​수정 된 파일을 다시 구문 분석해야한다 (CMakeLists의 빌드 옵션을 수정하면 전체 재 인덱스를 실행할 수 있습니다)

+0

나는 그것을 결코 깨닫지 못했지만, 당신 말이 맞습니다. 두 번 연속으로 프로젝트를로드하면 두 번째 시간이 빨라집니다 (처음 : CMake 생성 935s, 빌딩 심볼 270s, 두 번째 시간 : CMake 생성 49s, 빌딩 심볼 177s). 두 번째로 로딩되는 심볼이 더 많은 캐싱을 가질 수 있다면 좋을 것입니다. 그러나 한 가지 문제가 남아 있습니다 : 라이브러리의 소스 코드가 자주 변경되기 때문에 캐싱이 많은 도움이되지 않습니다. 나는 여전히 디렉토리를 라이브러리로 표시 할 것이다. – pesche