CLion indexer不解析项目目录中的某些包含 我有一个克利永C++项目,它有以下结构: project ---->my_includes | ----> my_own.hpp ---->source ----> my_app ----> my_src.cpp

CLion indexer不解析项目目录中的某些包含 我有一个克利永C++项目,它有以下结构: project ---->my_includes | ----> my_own.hpp ---->source ----> my_app ----> my_src.cpp,c++,clion,C++,Clion,我的_src.cpp的第一行是 #include "my_includes/my_own.hpp" 我使用的外部构建系统需要这种包含格式。问题是,如果我在包含的头文件中定义的源文件中使用了一个函数,如果我试图将鼠标悬停在包含的头文件上,CLion会说“找不到我自己的.hpp” 我尝试将include目录标记为包含项目源或标题,但这并没有解决它。有什么想法吗?这应该是一个基于CMake的项目,以便在CLion中正确打开。 如果您是CMake新手,请查看CMake基础教程:您需要创建一个CMake

我的_src.cpp的第一行是

#include "my_includes/my_own.hpp"
我使用的外部构建系统需要这种包含格式。问题是,如果我在包含的头文件中定义的源文件中使用了一个函数,如果我试图将鼠标悬停在包含的头文件上,CLion会说“找不到我自己的.hpp”


我尝试将include目录标记为包含项目源或标题,但这并没有解决它。有什么想法吗?

这应该是一个基于CMake的项目,以便在CLion中正确打开。
如果您是CMake新手,请查看CMake基础教程:

您需要创建一个
CMakeLists.txt
,让CLion开心。声明所有源文件就足够了,您不必将SCON(或任何其他构建系统)转换为cmake

您甚至不必手工编写CMakeLists.txt,您可以让CLion来完成:

  • 文件|新的CMake项目来源…
    (自CLion 2019.2)
  • 文件|导入项目|(旧的CLion)
然后指向包含项目的目录

现在编辑生成的
CMakeLists.txt
,并添加一个cmake命令,告诉CLion在哪里可以找到include(实际上是告诉编译器,CLion将重用该信息)

由于源文件使用include as
#include“my_includes/my_own.hpp”
,因此需要告诉cmake包含目录的基本目录
my_includes

include_directories(.)
其中点表示与包含
CMakeLists.txt
的目录相同的目录

我测试了一个复制您的布局的项目,从
my_src.cpp
我可以导航到
my_own.hpp


然后要构建,您仍然必须在控制台中使用SCON。还可以添加一个cmake命令,
add_custom_target()
,该命令将调用您的SCON(或make,或其他),以便您也可以从CLion导航到生成错误。

发布您的CMakeLists.txtSo,即使我的生成没有使用cmake(仅SCON),拥有一个CMake项目是CLion知道在哪里查找特定文件的唯一方法?是的,所以如果我们讨论CLion如何使用CMake,让我们只挑选几个示例:1。当代码生成工作时,我们会检查编译器中的功能可用性,就像override指令一样-CLion只会在编译器(在CMake中设置了所有选项)支持的情况下才建议您使用此勾号。这意味着至少C++11,当然编译器版本应该支持它。2.重命名重构,它检查的是真实的上下文用法,而不是文本用法。它取决于很多东西:项目的源文件、包含的标题和标题搜索路径、编译器标志、使用的工具链和平台、编译器预定义宏,等等。所以CLion分析了你的CMake项目模型,从中获取所有信息,然后使用它进行解析、解析和其他功能。我也有一个类似的问题,我需要的是include_目录。我不得不添加一些不同的选项,但它现在工作得很好。从CLion 2019.2开始,此选项被称为
File |来自源代码的新CMake项目…
在同步和识别包含的目录之前,可能需要一个构建。我只能在构建之后导航到这些标题。