CLion中的大型CMake项目加载速度很慢

时间:2016-06-03 16:56:15

标签: cmake clion

我试图将几个基于makefile的大型应用程序转换为CMake,以便在它们上使用CLion。

然而,每当我打开项目时,CLion需要大约四分之一个小时来加载CMake项目,而内存指示器仍然低于1987MB" 750。我承认我是一个CMake新手,所以我猜我的CMakeLists.txt文件不是最佳的。

基本上每个应用程序都在自己的目录中有一些特定的源代码,并使用了几个常见的'库。我在github上做了一个结构上等效的共享项目:

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

在该项目中有一个应用程序' a'和两个常见的图书馆和地图集#39;并且问候'每个图书馆都包含一个文件夹' test'使用Googletest测试。

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

实际上,大约有十几个库共有大约1500个.cpp和.hpp文件,所有这些文件都使用Boost和标准库,没有别的。

github上项目的主分支包含我的第一次尝试,其中所有目录都使用' add_subdirectory'来引用。第二次尝试(在with_ext分支中)使用ExternalProject_Add作为依赖库。当我编译/运行来自' greeting'它正确地编译了依赖性' atlas'。然而,它也试图编译/运行' atlas' (失败了......)我无法解决如何编译“地图集”的问题。没有测试。

那么我应该如何更好地设计CMake项目以使用所显示的源代码库?

(注意:我在Jetbrains CLion论坛上也提出了同样的问题:https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is-slow-in-CLion-

2 个答案:

答案 0 :(得分:6)

问题不在于CMakeLists.txt。 CLion解析cmake中引用的所有源文件以启用大多数功能(导航,代码完成,重构)。根据我的经验,索引大型项目可能需要几(几十)分钟。

缓解此问题的一种方法是将项目的“第三方”目录标记为:右键单击common目录和Mark directory as... > Libraries。如果需要,您甚至可以从项目中排除目录。

另请注意,CLion索引的结果是缓存的:在初始索引之后,即使重新启动项目,也只应重新修改已修改的文件(请注意,修改CMakeLists中的构建选项可能会触发完整的重新索引)

答案 1 :(得分:0)

您是否尝试过增加堆大小?

https://www.jetbrains.com/help/idea/increasing-memory-heap.html

来自"构建文件属性"对话框尝试增加最大堆大小字段。