首页 > 解决方案 > CLion 相当于 Visual Studio C++“过滤器”

问题描述

语境

在 Visual Studio IDE 中,对于 C++ 解决方案,您可以使用所谓的“过滤器”来模拟源文件树/目录,同时通常将每个项目的所有源代码保留在每个项目的根目录中。主要优点是能够直接#include "foo.h"

我一直在尝试将一些解决方案“切换”到 CLion,因为它专注于多平台,并试图将对 CMake+GCC 的支持添加到现有的 VS 解决方案中,因为没有跨平台 IDE 对.sln/.vcxproj文件具有原生支持

现在 - 我知道一些较大的 CMake 项目(如解决方案/子项目组)经常使用普通文件系统子目录来进一步分解每个子项目中的代码,但由于一些“解决方案”我试图添加 CMake 支持到,考虑到几百个源文件,我真的无法手动重构所有内容并更改#include "service_foo.h"#include service/service_foo.h每个源文件。

还要考虑的另一件事是我没有迁移解决方案以使用 CMake - 我正在添加对 CMake 构建/CLion IDE 支持以及 MSBuild 工具链/VS IDE 支持的支持,因此我不想引入任何重大更改。

我对 JetBrains IDE 生态系统还很陌生,所以我想知道是否有一些东西可以提供这种开箱即用的功能,或者可能带有插件。

问题

有没有办法在不更改文件系统的情况下将源文件分组,即在 CLion IDE 的项目视图工具箱中?

到目前为止在文档中找不到任何东西,但它与Code Hierarchy类似,但用于.h/.cpp文件。

例子

文件系统结构(在磁盘上可见)
$REPO_ROOT*.vcxproj, .idea/等提供的存储库。

Main CMakeList.txt: $REPO_ROOT/CmakeList.txt
Example subprojects: $REPO_ROOT/foo_slib/ $REPO_ROOT/program/
Example Source files: $REPO_ROOT/program/main.cpp $REPO_ROOT/program/gui_init.h $REPO_ROOT/program/VulkanDelegate.h 

项目/解决方案根结构(如 IDE 中的项目工具箱视图中所示)
$VIEW_ROOT是为 CLion 打开的主项目或为 MSVS 打开的 .sln,如在每个 IDE 中的项目视图中所示

Main CmakeList.txt: $VIEW_ROOT/CMAKE/CmakeList.txt
Example subprojects: $VIEW_ROOT/foo_slib/ $VIEW_ROOT/program/
Example Source files: $VIEW_ROOT/program/main.cpp $VIEW_ROOT/program/GUI/gui_init.h $VIEW_ROOT/program/Delegates/VulkanDelegate.h

标签: visual-studiovisual-studio-2019clionjetbrains-ide

解决方案


您肯定不需要编辑源文件和更改包含路径。没有什么可以阻止您#include使用编译器包含路径选项 -I<path>实现相同的路径。在 CLion 中,它通过CMake 的 target_include_directories指令进行控制。您可能还必须弄清楚项目是如何链接的。

您可以将文件和文件夹添加到 CLion 的收藏夹。您可以拥有多组收藏夹,因此可以模拟项目中的任意虚拟文件夹。

对于更复杂的查询语言,有Scopes。您可以设置它们,然后它们将出现在Project 视图的 Views 下拉列表中,每个都作为一个单独的视图。


推荐阅读