【问题标题】:Cmake add include paths to clangCmake添加包含路径到clang
【发布时间】:2016-07-04 20:35:33
【问题描述】:

我目前正在使用来自 GitHub 的 Atom 使用 C++ 进行开发。我找到了插件autocomplete-clang,它为 Atom 添加了自动完成功能。 我的问题是,我使用 cmake 来构建我的程序,并且我还使用了这样的项目结构:

- Sensors
-- src
-- inc
- LowLevel
-- src
-- inc
- System
-- src
-- inc

我只在我的代码中的someSourceFileFromLowLevel.cxx 中使用#include "someHeaderFromSystem.h"。这意味着,clang 找不到包含文件。

有没有办法告诉 clang 在哪里可以找到文件,这不会改变任何全局系统变量?

【问题讨论】:

    标签: c++ c++11 cmake clang include-path


    【解决方案1】:

    没问题,这就是 include_directories 的用途。

    它指定编译器将在其中搜索的其他包含目录。


    如果您在 Sensors、LowLevel、System 中有 CMakeLists.txt,则可以在每个中添加:

    include_directories(inc)
    

    如果你只有一个主CMakeLists.txt

    include_directories(Sensors/inc LowLevel/inc System/inc)
    

    【讨论】:

    • 好吧,我做到了。如果我使用 cmake . 命令,它会生成 make 文件。这些也按预期工作。但是在 Atom 中编辑期间,依赖于 clang 的后台 linter 没有找到正确的包含目录。
    • 我明白了,所以这更像是一个与原子相关的问题。您是否检查过compile_commands.json 是否已创建?如果没有,您可以通过 CMAKE_EXPORT_COMPILE_COMMANDS 为您的 cmake 构建启用它。
    【解决方案2】:

    set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 添加到生成文件compile_commands.jsonCMakeLists.txt 文件中。使用此文件,include 指令可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多