在使用自定义工具链时包括用于 CLion 检查的目录

Posted

技术标签:

【中文标题】在使用自定义工具链时包括用于 CLion 检查的目录【英文标题】:Including directories for CLion inspections while using custom toolchain 【发布时间】:2018-08-07 10:34:33 【问题描述】:

我正在使用CLion 2018.2 为custom compiler toolchain 编写C/C++ 代码,CLion 本身不支持这些代码。我目前在Terminal 上使用make 进行编译,而不是在IDE 中构建。

我有一个自定义包含目录,其中包含 CLion 未解析/找到的头文件,因为它们不是项目的一部分。但是,我想为他们获得代码检查功能。标题是例如位于C:\devkitPro\wups\include

我决定使用include_directories()CMake命令来提高CLion解析代码的能力:

include_directories("C:\\devkitPro\\wups\\include")

然后我也修改了CMake包含路径:

set(CMAKE_INCLUDE_PATH "C:\\devkitPro\\wups\\include")

还决定链接到lib目录:

link_directories("C:\\devkitPro\\wups\\lib")

完成所有这些操作后,标题仍然没有在 CLion 中解析(但它仍然使用 make 当然编译)。如何使用CLion 完成标头解析,或者现在还不可能吗?

【问题讨论】:

当您通过included_directories 包含时,您是否检查了更新后的CMake 脚本上的CMake 重新加载是否正确?如果您还没有这样做,请尝试重新加载项目。这里的另一个选项是从项目视图中将目录标记为并将源文件和标题设置到此目录。或者(从 v2018.2 开始)是您只需通过项目文件中的#include 指令使用头文件/源代码,然后包含的文件也被视为项目之一(但是应该在项目根目录下)。 【参考方案1】:

根据CLion 中配置的工具链,CMake 需要WindowsWSL 样式的路径。检查将使用include_directories 指令,例如

# Add extra include directories
if (WIN32) # When using a Windows compilation toolchain
    set(WUT "/c/devkitPro/wut/include")
    set(WUPS "/c/devkitPro/wups/include")
else () # When using WSL as toolchain
    set(WUT "/mnt/c/devkitPro/wut/include")
    set(WUPS "/mnt/c/devkitPro/wups/include")
endif ()
include_directories($WUT)
include_directories($WUPS)

更详细的书面教程可以在this拉取请求中找到。

【讨论】:

以上是关于在使用自定义工具链时包括用于 CLion 检查的目录的主要内容,如果未能解决你的问题,请参考以下文章

当我在 CLion 2020.3 上使用远程工具链时,cmake 无法解析本地路径

CMake File API“找不到回复目录”

如何将 CLion 自定义 CMake 可执行文件设置为随 Homebrew 安装的版本?

C/C++ 内存治理神器 - Google Sanitizers

如何通过评论折叠CLION中的自定义区域?

使用Clion进行Qt项目开发