大型CMake项目在CLion中加载缓慢
我试图将几个基于makefile的大型应用程序转换为CMake,以便在它们上使用CLion。
但是,每次我打开该项目时,CLion都需要大约一刻钟的时间才能加载CMake项目,而内存指标则保持在“1987年的750”以下。 我承认我是CMake新手,所以我猜我的CMakeLists.txt文件不是最优的。
基本上每个应用程序都有自己的目录中的特定源代码,并且正在使用几个“通用”库。 我做了一个结构上相当于github上分享的项目:
https://github.com/pe-st/zalophus/tree/master/tree
在该项目中,有一个应用程序'a'和两个常见的图书馆'地图集'和'问候'。 每个库都包含一个包含Googletest测试的“测试”文件夹。
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
实际上,大约有十几个库,共有大约1500个.cpp和.hpp文件,所有这些文件都使用Boost和标准库,没有别的。
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-慢进,CLion-)
这个问题并不在CMakeLists.txt
。 CLion解析cmake中引用的所有源文件以启用大多数功能(导航,代码完成,重构)。 根据我的经验,对大型项目进行索引可能需要几(十几分钟)的时间。
解决此问题的一种方法是标记项目的“第三方”目录,如右键单击common
目录,然后将目录Mark directory as... > Libraries
。 如果需要,甚至可以从项目中排除目录。
还要注意CLion索引的结果被缓存:在初始索引之后,即使在重新启动项目时也只应修改已修改的文件(请注意,修改CMakeLists中的构建选项可能会触发完整的重新索引)
你有没有尝试增加堆大小?
https://www.jetbrains.com/help/idea/increasing-memory-heap.html
从“构建文件属性”对话框中,尝试增加最大堆大小字段。
链接地址: http://www.djcxy.com/p/92105.html