【问题标题】:Tell CLion to use header include path with prefix告诉 CLion 使用带有前缀的标头包含路径
【发布时间】:2016-04-14 10:07:09
【问题描述】:

我的项目布局如下:

  • 工作区
    • project_a
      • project_a -> .h 文件在这里
      • 根目录 -> .cxx 文件在此处
    • project_b
      • project_b -> .h 文件在这里
      • 根目录 -> .cxx 文件在此处

由于我们使用的构建系统,我无法更改目录布局。 标头包含为

#include "project_a/some_header.h

也来自相应的 .cxx 文件。 我在根目录中创建了一个 CMakeLists.txt 文件,它通过include_directories(project_a project_b) 添加我所有的项目,它应该是#include 中给出的路径之前的路径前缀。 CLion 无法找到我的任何文件并为其编制索引。

另外,我有一个自动生成的结构头目录

  • 包括
    • lib_a -> .h 文件
    • lib_b -> .h 文件

我已经相应地设置了它们,但它也不起作用。

CLion 是否无法解析 #include 中的前缀路径,或者为什么这不起作用?

【问题讨论】:

    标签: c++ cmake clion


    【解决方案1】:

    在 CMakeList.txt 中,它应该位于父文件夹中,在这种情况下,添加“工作区”文件夹

    set(INCLUDE_DIRECTORIES ./)
    

    例如,如果有一个包含包含文件的父文件夹:

    • 工作区
      • 包括文件夹
        • project_a
          • 啊.h
      • b.h: #include

    那么 CMakeList.txt 应该包含

    set(INCLUDE_DIRECTORIES ./)
    include_directories(includes_folder)
    

    【讨论】:

      【解决方案2】:

      如果唯一不起作用的是 Clion 对您的标题的解释,那么您应该查看 Clion FAQ。如果 Clion 没有按照您期望的方式工作,那么您的 CMake 项目可能没有正确设置,或者您可能无意中做了一些事情。您应该向我们展示您的 CMakeLists.txt。

      来自 Clion 常见问题解答:


      问:CLion 未能找到我的一些标头。它在哪里搜索它们? 答:CLion 搜索 CMake 搜索的相同位置。在 CMake 中设置 INCLUDE_DIRECTORIES 变量,为 IDE 提供 headers 路径。

      顺便说一句,在这个wiki 中,您可以找到很多有用的 CMake 变量,如果您是 CMake 新手,这些变量的描述可能会特别有用。

      问:重构不起作用并且突出显示错误,即使项目可以正确编译。发生了什么? 答:很可能 CLion 不知道您项目中的某些文件(这些文件在项目树中显示为灰色): 非项目文件 它通过以下方式从 CMakeLists.txt 文件中获取此信息: set(SOURCE_FILES main.cpp) add_executable(my_exec ${SOURCE_FILES}) 这就是 CLion 现在知道 main.cpp 包含在您的项目中的方式。就目前而言,头文件(以防它们的名称与已添加到 SOURCE_FILES 变量的相应 .cpp 文件不同)也应该以这种方式包含在项目中。

      【讨论】:

        猜你喜欢
        • 2021-04-17
        • 2023-03-29
        • 2015-10-05
        • 1970-01-01
        • 2016-09-03
        • 2020-05-12
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多