我正在尝试将几个基于makefile的大型应用程序转换为CMake,以便在它们上使用CLion.
然而,每当我打开项目时,CLion需要大约四分之一个小时来加载CMake项目,而内存指示器仍然低于"1987MB的750".我承认我是一个CMake新手,所以我猜我的CMakeLists.txt文件不是最佳的.
基本上每个应用程序在其自己的目录中都有一些特定的源代码,并且使用了几个"通用"库.我在github上做了一个结构上等效的共享项目:
https://github.com/pe-st/zalophus/tree/master/tree
在该项目中,有一个应用程序'a'和两个常见的图书馆'地图集'和'问候'.每个库都包含一个带有Googletest测试的文件夹'test'.
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
Run Code Online (Sandbox Code Playgroud)
实际上,大约有十几个库共有约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- 慢慢地在 - 克里昂 -)
问题不在于CMakeLists.txt.CLion解析cmake中引用的所有源文件以启用大多数功能(导航,代码完成,重构).根据我的经验,索引大型项目可能需要几(几十)分钟.
缓解此问题的一种方法是将项目的"第三方"目录标记为:右键单击您的common目录,然后Mark directory as... > Libraries.如果需要,您甚至可以从项目中排除目录.
另请注意,CLion索引的结果是缓存的:在初始索引之后,即使重新启动项目,也只应重新修改已修改的文件(请注意,修改CMakeLists中的构建选项可能会触发完整的重新索引)
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |